{"id":13529693,"url":"https://github.com/bnagy/cgasm","last_synced_at":"2026-01-23T21:30:18.274Z","repository":{"id":35146193,"uuid":"39369075","full_name":"bnagy/cgasm","owner":"bnagy","description":"We're insanely passionate about command line asm documentation in the cloud, and we're crushing it!","archived":false,"fork":false,"pushed_at":"2020-09-19T01:58:57.000Z","size":925,"stargazers_count":374,"open_issues_count":3,"forks_count":19,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-04-01T17:45:01.232Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PLpgSQL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bnagy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-07-20T07:17:27.000Z","updated_at":"2025-03-14T23:53:08.000Z","dependencies_parsed_at":"2022-08-17T22:35:29.577Z","dependency_job_id":null,"html_url":"https://github.com/bnagy/cgasm","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/bnagy/cgasm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnagy%2Fcgasm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnagy%2Fcgasm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnagy%2Fcgasm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnagy%2Fcgasm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bnagy","download_url":"https://codeload.github.com/bnagy/cgasm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnagy%2Fcgasm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28700525,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T17:25:48.045Z","status":"ssl_error","status_checked_at":"2026-01-23T17:25:47.153Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T07:00:38.591Z","updated_at":"2026-01-23T21:30:18.257Z","avatar_url":"https://github.com/bnagy.png","language":"PLpgSQL","funding_links":[],"categories":["Development","PLpgSQL","\u003ca name=\"programming\"\u003e\u003c/a\u003eProgramming"],"sub_categories":["Chat","Games"],"readme":"# cgasm\n\n## About\n\n`cgasm` is a standalone, offline terminal-based tool with no dependencies that gives me x86 assembly documentation. It is pronounced \"SeekAzzem\".\n\nhttps://storify.com/thegrugq/once-upon-a-time-in-the-valley\n\n## Installation\n\nYou should follow the [instructions](https://golang.org/doc/install) to\ninstall Go, if you haven't already done so. Then:\n```bash\n$ go get github.com/bnagy/cgasm\n```\n\nThe binary is standalone - it's statically linked and the data is compiled in.\nYou can cross compile this to any architecture that go supports.\n\n## Acknowledgements\n\n- nologic for doing the hard work on [idaref](https://github.com/nologic/idaref)\n- @brnocrist for being the first to point me at it\n\n## Usage\n\nWhat was that AES thing...?\n```\nvelleity:~ ben$ cgasm -f aes\nFuzzy matches for \"aes\" (12):\nAESENC - Perform One Round of an AES Encryption Flow\nVAESIMC -\u003e AESIMC - Perform the AES InvMixColumn Transformation\nAESKEYGENASSIST - AES Round Key Generation Assist\nAESIMC - Perform the AES InvMixColumn Transformation\nVAESDECLAST -\u003e AESDECLAST - Perform Last Round of an AES Decryption Flow\nAESDEC - Perform One Round of an AES Decryption Flow\nVAESENC -\u003e AESENC - Perform One Round of an AES Encryption Flow\nVAESDEC -\u003e AESDEC - Perform One Round of an AES Decryption Flow\nVAESENCLAST -\u003e AESENCLAST - Perform Last Round of an AES Encryption Flow\nAESENCLAST - Perform Last Round of an AES Encryption Flow\nVAESKEYGENASSIST -\u003e AESKEYGENASSIST - AES Round Key Generation Assist\nAESDECLAST - Perform Last Round of an AES Decryption Flow\n```\n\nDefault output is a summary\n```\nvelleity:~ ben$ cgasm aesenc\nAESENC - Perform One Round of an AES Encryption Flow\n\nDescription:\nThis instruction performs a single round of an AES encryption flow using a round\nkey from the second source operand, operating on 128-bit data (state) from the\nfirst source operand, and store the result in the destination operand. Use the\nAESENC instruction for all but the last encryption rounds. For the last encryption\nround, use the AESENCCLAST instruction. 128-bit Legacy SSE version: The first\nsource operand and the destination operand are the same and must be an XMM register.\nThe second source operand can be an XMM register or a 128-bit memory location.\nBits (VLMAX1:128) of the corresponding YMM destination register remain unchanged.\nVEX.128 encoded version: The first source operand and the destination operand\nare XMM registers. The second source operand can be an XMM register or a 128-bit\nmemory location. Bits (VLMAX-1:128) of the destination YMM register are zeroed.\n```\n\nOr go full nerd\n```\nvelleity:~ ben$ cgasm -v aesenc\n\nAESENC - Perform One Round of an AES Encryption Flow:\n| Opcode/Instruction                   | Op/En| 64/32-bit Mode| CPUID Feature Flag    | Description\n| 66 0F 38 DC /r AESENC xmm1, xmm2/m128| RM   | V/V           | AES                   | Perform one round of an AES encryption\n|                                      |      |               |                       | flow, operating on a 128-bit data (state)\n|                                      |      |               |                       | from xmm1 with a 128-bit round key from\n|                                      |      |               |                       | xmm2/m128.\n| VEX.NDS.128.66.0F38.WIG DC /r VAESENC| RVM  | V/V           | Both AES and AVX flags| Perform one round of an AES encryption\n| xmm1, xmm2, xmm3/m128                |      |               |                       | flow, operating on a 128-bit data (state)\n|                                      |      |               |                       | from xmm2 with a 128-bit round key from\n|                                      |      |               |                       | the xmm3/m128; store the result in xmm1.\n\nInstruction Operand Encoding:\n| Op/En| Operand 1       | Operand2     | Operand3     | Operand4\n| RM   | ModRM:reg (r, w)| ModRM:r/m (r)| NA           | NA\n| RVM  | ModRM:reg (w)   | VEX.vvvv (r) | ModRM:r/m (r)| NA\n\nDescription:\nThis instruction performs a single round of an AES encryption flow using a round\nkey from the second source operand, operating on 128-bit data (state) from the\nfirst source operand, and store the result in the destination operand. Use the\nAESENC instruction for all but the last encryption rounds. For the last encryption\nround, use the AESENCCLAST instruction. 128-bit Legacy SSE version: The first\nsource operand and the destination operand are the same and must be an XMM register.\nThe second source operand can be an XMM register or a 128-bit memory location.\nBits (VLMAX1:128) of the corresponding YMM destination register remain unchanged.\nVEX.128 encoded version: The first source operand and the destination operand\nare XMM registers. The second source operand can be an XMM register or a 128-bit\nmemory location. Bits (VLMAX-1:128) of the destination YMM register are zeroed.\n\nOperation:\n\nAESENC\nSTATE \u003c- SRC1;\nRoundKey \u003c- SRC2;\nSTATE \u003c- ShiftRows( STATE );\nSTATE \u003c- SubBytes( STATE );\nSTATE \u003c- MixColumns( STATE );\nDEST[127:0] \u003c- STATE XOR RoundKey;\nDEST[VLMAX-1:128] (Unmodified)\nVAESENC\nSTATE \u003c- SRC1;\nRoundKey \u003c- SRC2;\nSTATE \u003c- ShiftRows( STATE );\nSTATE \u003c- SubBytes( STATE );\nSTATE \u003c- MixColumns( STATE );\nDEST[127:0] \u003c- STATE XOR RoundKey;\nDEST[VLMAX-1:128] \u003c- 0\n\nIntel C/C++ Compiler Intrinsic Equivalent:\n| (V)AESENC:| __m128i _mm_aesenc (__m128i, __m128i)\n\nSIMD Floating-Point Exceptions:\nNone\n\nOther Exceptions:\nSee Exceptions Type 4.\n```\n\n## License\n\nGPLv2, see LICENSE.md for details\n\n## TODO\n\nNothing. No other features. Ever.\n\n## Contributing\n\nI. Will. Cut. You.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbnagy%2Fcgasm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbnagy%2Fcgasm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbnagy%2Fcgasm/lists"}