Function at 0x406ad2
Capabilities:
Encrypt data using speck
Query environment variable
Terminate process

Disassembly:
push 0x4168d4
jmp fcn.00401b2c
mov dword [0x416c00], edi
mov byte [0x416ca0], 0
cmp byte [esi], 0
je 0x407855
cmp byte [esi], 0x2e
je 0x4076f9
lodsb al, byte [esi]
cmp al, 1
je 0x406c0c
cmp al, 2
je 0x406c2b
cmp al, 4
je 0x406c36
cmp al, 8
je 0x406c3c
cmp al, 0xf
je 0x401a40
cmp al, 0x10
je 0x406c40
cmp al, 0x11
je 0x406c5f
cmp al, 0x29
je 0x406bf5
cmp al, 0x5d
je 0x406bf5
cmp al, 0x21
je 0x401a22
sub edi, 0x14
mov ebx, edi
sub ebx, 0x14
cmp al, 0xe0
je 0x4074b0
cmp al, 0xe1
je 0x4075c4
cmp al, 0xd0
je 0x4073aa
cmp al, 0x83
je 0x407463
mov dx, word [ebx + 8]
or dx, word [edi + 8]
cmp al, 0x80
je 0x406e2f
cmp al, 0x81
je 0x406ee1
mov ah, byte [ebx + 0xc]
or ah, byte [edi + 0xc]
je 0x406ba7
cmp dword [0x416bec], 0
jne 0x406ba7
mov eax, dword [0x416b78]
mov dword [0x416bec], eax
mov dword [0x416bf0], 0x401acc
cmp al, 0x90
je 0x406f5a
cmp al, 0x91
je 0x40709b
or dx, dx
jne 0x401a22
cmp al, 0xa0
je 0x40711e
cmp al, 0xb0
je 0x407131
cmp al, 0xb1
je 0x407140
cmp al, 0xb2
je 0x40714f
cmp al, 0xc0
je 0x407234
cmp al, 0xc1
je 0x407288
jmp 0x401a22
sub edi, 0x14
cmp byte [0x416ca0], 0
je 0x406c0b
xor eax, eax
mov dword [edi], eax
mov dword [edi + 4], eax
mov byte [edi + 0xc], al
ret
xor eax, eax
lodsb al, byte [esi]
stosd dword es:[edi], eax
xor al, al
stosd dword es:[edi], eax
mov word [edi], 0
mov byte [edi + 4], 0
mov dword [edi + 8], 0
add edi, 0xc
jmp 0x406af1
xor eax, eax
lodsw ax, word [esi]
stosd dword es:[edi], eax
xor ax, ax
stosd dword es:[edi], eax
jmp 0x406c13
movsd dword es:[edi], dword [esi]
xor eax, eax
stosd dword es:[edi], eax
jmp 0x406c13
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
jmp 0x406c13
mov byte [edi + 9], 0
mov byte [edi + 0xc], 0
lodsb al, byte [esi]
mov byte [edi + 8], al
mov byte [edi + 0xa], 1
xor eax, eax
mov dword [edi + 0x10], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
add edi, 0xc
jmp 0x406af1
xor eax, eax
mov dword [edi + 8], eax
mov byte [edi + 0xc], al
mov dword [edi + 0x14], eax
lodsd eax, dword [esi]
cmp eax, 0xf
jb 0x406da2
je 0x401ae1
mov ebx, eax
mov ax, word [0x416b56]
mov word [ebx + 0x12], ax
or byte [ebx + 8], 8
test byte [ebx + 8], 1
je 0x406dd4
cmp ax, word [ebx + 0x10]
je 0x406cd3
test byte [ebx + 8], 4
jne 0x406dbc
test byte [ebx + 9], 1
je 0x406cd3
mov eax, dword [ebx]
sub eax, dword [0x416c2c]
stosd dword es:[edi], eax
mov eax, dword [ebx + 4]
sbb eax, dword [0x416c30]
stosd dword es:[edi], eax
mov eax, dword [0x416c2c]
or eax, dword [0x416c30]
je 0x406cda
or byte [0x416ca6], 0xff
jmp 0x406cda
mov eax, dword [ebx]
stosd dword es:[edi], eax
mov eax, dword [ebx + 4]
stosd dword es:[edi], eax
mov al, byte [ebx + 0xb]
mov byte [edi + 4], al
mov eax, dword [ebx + 0xc]
mov dword [edi], eax
mov eax, dword [ebx + 0x14]
mov dword [edi + 8], eax
add edi, 0xc
mov al, byte [ebx + 0xa]
or al, al
je 0x406af1
cmp byte [0x416c8d], 0xff
je 0x406af1
cmp byte [0x416c8d], 0
je 0x406d26
cmp byte [0x416c8c], 0
jne 0x406af1
mov byte [0x416c8c], al
jmp 0x406af1
xchg byte [0x416c8c], al
or al, al
je 0x406af1
cmp al, byte [0x416c8c]
jne 0x4019e6
jmp 0x406af1
mov eax, dword [0x416c00]
xor edx, edx
sub eax, dword [0x416bc4]
sbb edx, dword [0x416bc8]
stosd dword es:[edi], eax
mov eax, edx
stosd dword es:[edi], eax
mov eax, dword [0x416bcc]
stosd dword es:[edi], eax
mov al, byte [0x416ca8]
mov byte [edi], al
mov eax, dword [0x416bd0]
mov dword [edi + 4], eax
add edi, 8
jmp 0x406af1
mov eax, dword [0x416bd4]
jmp 0x406d4a
mov eax, dword [0x416be0]
stosd dword es:[edi], eax
xor eax, eax
stosd dword es:[edi], eax
add edi, 0xc
jmp 0x406af1
call fcn.004016ac
stosd dword es:[edi], eax
mov eax, edx
stosd dword es:[edi], eax
add edi, 0xc
jmp 0x406af1
or eax, eax
je 0x406d45
cmp eax, 1
je 0x406d80
cmp eax, 2
je 0x406d91
cmp eax, 3
je 0x406d79
mov edx, 0x401a36
jmp 0x406dea
mov edx, 0x401a96
mov eax, dword [ebx + 0x18]
cmp dword [0x416bec], 0
jne 0x406dea
mov dword [0x416be8], eax
jmp 0x406dea
mov edx, 0x401a4a
cmp dword [0x416bec], 0
jne 0x406dea
mov eax, dword [ebx + 0x18]
mov dword [0x416be8], eax
cmp word [0x416b56], 1
ja 0x406dfb
or byte [0x416ca6], 0xff
mov byte [edi + 0xc], 0
or byte [0x416ca0], 0xff
xor eax, eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
add edi, 0xc
cmp dword [0x416bec], 0
jne 0x406af1
mov eax, dword [0x416b78]
mov dword [0x416bec], eax
mov dword [0x416bf0], edx
jmp 0x406af1
mov ecx, dword [ebx + 0x10]
cmp byte [edi + 0xc], 0
je 0x406e5e
mov ecx, dword [edi + 0x10]
cmp byte [ebx + 0xc], 0
je 0x406e5e
cmp dword [0x416bec], 0
jne 0x406e5e
mov eax, dword [0x416b78]
mov dword [0x416bec], eax
mov dword [0x416bf0], 0x401acc
mov al, byte [edi + 0xc]
or byte [ebx + 0xc], al
mov dword [ebx + 0x10], ecx
mov eax, dword [edi]
add dword [ebx], eax
mov eax, dword [edi + 4]
adc dword [ebx + 4], eax
or dx, dx
je 0x406af1
push esi
mov esi, ebx
lea ebx, [edi + 0xa]
mov cl, byte [edi + 8]
call fcn.00406e99
lea ebx, [edi + 0xb]
mov cl, byte [edi + 9]
call fcn.00406e99
pop esi
jmp 0x406af1
xor ah, ah
mov ah, byte [ebx + 0xc]
mov al, byte [edi + 0xc]
or al, al
je 0x406efb
cmp al, ah
jne 0x406f30
xor ah, ah
mov ecx, dword [edi + 0x10]
cmp ecx, dword [ebx + 0x10]
jne 0x406f30
mov byte [ebx + 0xc], ah
mov eax, dword [edi]
sub dword [ebx], eax
mov eax, dword [edi + 4]
sbb dword [ebx + 4], eax
or dx, dx
je 0x406af1
push esi
mov esi, ebx
lea ebx, [edi + 0xa]
mov cl, byte [edi + 8]
call fcn.00406f4f
lea ebx, [edi + 0xb]
mov cl, byte [edi + 9]
call fcn.00406f4f
pop esi
jmp 0x406af1
cmp dword [0x416bec], 0
jne 0x406efb
mov eax, dword [0x416b78]
mov dword [0x416bec], eax
mov dword [0x416bf0], 0x401acc
jmp 0x406efb
or dx, dx
je 0x406f87
cmp word [ebx + 8], 0
jne 0x406f87
mov eax, dword [ebx]
xchg dword [edi], eax
mov dword [ebx], eax
mov eax, dword [ebx + 4]
xchg dword [edi + 4], eax
mov dword [ebx + 4], eax
mov eax, dword [ebx + 8]
xchg dword [edi + 8], eax
mov dword [ebx + 8], eax
mov eax, dword [ebx + 0xc]
xchg dword [edi + 0xc], eax
mov dword [ebx + 0xc], eax
push esi
push edx
mov esi, ebx
xor bl, bl
bt dword [esi + 4], 0x1f
jae 0x406fa2
not dword [esi]
not dword [esi + 4]
add dword [esi], 1
adc dword [esi + 4], 0
not bl
bt dword [edi + 4], 0x1f
jae 0x406fb7
not dword [edi]
not dword [edi + 4]
add dword [edi], 1
adc dword [edi + 4], 0
not bl
cmp dword [esi + 4], 0
je 0x406fc7
cmp dword [edi + 4], 0
jne 0x401a40
mov eax, dword [esi + 4]
mul dword [edi]
or edx, edx
jne 0x401a40
mov ecx, eax
mov eax, dword [esi]
mul dword [edi + 4]
or edx, edx
jne 0x401a40
add ecx, eax
jb 0x401a40
mov eax, dword [esi]
mul dword [edi]
add edx, ecx
jb 0x401a40
test edx, 0x80000000
jne 0x401a40
mov dword [esi], eax
mov dword [esi + 4], edx
or bl, bl
je 0x407018
not dword [esi]
not dword [esi + 4]
add dword [esi], 1
adc dword [esi + 4], 0
pop edx
or dx, dx
je 0x407095
cmp word [edi + 8], 0
jne 0x401a36
cmp byte [esi + 8], 0
je 0x40705f
mov al, byte [edi]
cbw
cwde
cdq
cmp edx, dword [edi + 4]
jne 0x401a40
cmp eax, dword [edi]
jne 0x401a40
imul byte [esi + 0xa]
mov dl, ah
cbw
cmp ah, dl
jne 0x401a40
mov byte [esi + 0xa], al
or al, al
jne 0x40705f
mov byte [esi + 8], al
cmp byte [esi + 9], 0
je 0x407095
mov al, byte [edi]
cbw
cwde
cdq
cmp edx, dword [edi + 4]
jne 0x401a40
cmp eax, dword [edi]
jne 0x401a40
imul byte [esi + 0xb]
mov dl, ah
cbw
cmp ah, dl
jne 0x401a40
mov byte [esi + 0xb], al
or al, al
jne 0x407095
mov byte [esi + 9], al
pop esi
jmp 0x406af1
push esi
push edx
mov esi, ebx
call fcn.00407614
pop edx
or dx, dx
je 0x407118
cmp byte [esi + 8], 0
je 0x4070e1
mov al, byte [edi]
cbw
cwde
cdq
cmp edx, dword [edi + 4]
jne 0x401a40
cmp eax, dword [edi]
jne 0x401a40
or al, al
je 0x401a40
mov al, byte [esi + 0xa]
cbw
idiv byte [edi]
or ah, ah
jne 0x401acc
mov byte [esi + 0xa], al
cmp byte [esi + 9], 0
je 0x407118
mov al, byte [edi]
cbw
cwde
cdq
cmp edx, dword [edi + 4]
jne 0x401a40
cmp eax, dword [edi]
jne 0x401a40
or al, al
je 0x401a40
mov al, byte [esi + 0xb]
cbw
idiv byte [edi]
or ah, ah
jne 0x401acc
mov byte [esi + 0xb], al
pop esi
jmp 0x406af1
push esi
mov esi, ebx
call fcn.00407614
mov dword [esi], eax
mov dword [esi + 4], edx
pop esi
jmp 0x406af1
mov eax, dword [edi]
and dword [ebx], eax
mov eax, dword [edi + 4]
and dword [ebx + 4], eax
jmp 0x406af1
mov eax, dword [edi]
or dword [ebx], eax
mov eax, dword [edi + 4]
or dword [ebx + 4], eax
jmp 0x406af1
mov eax, dword [edi]
xor dword [ebx], eax
mov edx, dword [edi + 4]
xor dword [ebx + 4], edx
cmp byte [0x416c9d], 1
je 0x407190
cmp byte [0x416c9d], 2
je 0x4071b5
cmp byte [0x416c9d], 4
je 0x4071dc
cmp byte [0x416c9d], 6
je 0x4071f4
jmp 0x406af1
call fcn.00407182
jne 0x40717d
xor edx, dword [ebx + 4]
jne 0x40717d
cmp eax, 0xffffff80
jb 0x40717d
xor eax, dword [ebx]
cmp eax, 0xff
ja 0x40717d
mov dword [ebx + 4], edx
and dword [ebx], 0xff
jmp 0x40717d
call fcn.00407182
jne 0x40717d
xor edx, dword [ebx + 4]
jne 0x40717d
cmp eax, 0xffff8000
jb 0x40717d
xor eax, dword [ebx]
cmp eax, 0xffff
ja 0x40717d
mov dword [ebx + 4], edx
and dword [ebx], 0xffff
jmp 0x40717d
call fcn.00407182
jne 0x40717d
xor edx, dword [ebx + 4]
jne 0x40717d
cmp eax, 0x80000000
jb 0x40717d
mov dword [ebx + 4], edx
jmp 0x40717d
cmp edx, 0xffff8000
jae 0x40720d
xor edx, dword [ebx + 4]
xor eax, dword [ebx]
cmp edx, 0xffff8000
jb 0x40717d
xor edx, dword [ebx + 4]
cmp edx, 0xffff
ja 0x40717d
and dword [ebx + 4], 0xffff
jmp 0x40717d
not dword [edi]
not dword [edi + 4]
add dword [edi], 1
adc dword [edi + 4], 0
mov eax, dword [edi + 4]
bt eax, 0x1f
jb 0x40727c
or eax, eax
jne 0x407398
mov ecx, dword [edi]
cmp ecx, 0x40
jae 0x407398
mov edx, dword [ebx + 4]
mov eax, dword [ebx]
cmp ecx, 0x20
jae 0x407269
shld edx, eax, cl
shl eax, cl
mov dword [ebx], eax
mov dword [ebx + 4], edx
jmp 0x406af1
sub cl, 0x20
shl eax, cl
mov dword [ebx + 4], eax
mov dword [ebx], 0
jmp 0x406af1
not dword [edi]
not dword [edi + 4]
add dword [edi], 1
adc dword [edi + 4], 0
mov eax, dword [edi + 4]
bt eax, 0x1f
jb 0x407228
or eax, eax
jne 0x407398
mov ecx, dword [edi]
cmp ecx, 0x40
jae 0x407398
mov edx, dword [ebx + 4]
mov eax, dword [ebx]
cmp ecx, 0x20
jae 0x407329
cmp byte [0x416c9d], 1
je 0x4072e1
cmp byte [0x416c9d], 2
je 0x4072f4
cmp byte [0x416c9d], 4
je 0x407309
cmp byte [0x416c9d], 6
je 0x407319
shrd eax, edx, cl
shr edx, cl
mov dword [ebx], eax
mov dword [ebx + 4], edx
jmp 0x406af1
cmp edx, 0xffffffff
jne 0x4072d2
cmp eax, 0xffffff80
jb 0x4072d2
and eax, 0xff
xor edx, edx
jmp 0x4072d2
cmp edx, 0xffffffff
jne 0x4072d2
cmp eax, 0xffff8000
jb 0x4072d2
and eax, 0xffff
xor edx, edx
jmp 0x4072d2
cmp edx, 0xffffffff
jne 0x4072d2
cmp eax, 0x80000000
jb 0x4072d2
xor edx, edx
jmp 0x4072d2
cmp edx, 0xffff8000
jb 0x4072d2
and edx, 0xffff
jmp 0x4072d2
sub cl, 0x20
cmp byte [0x416c9d], 1
je 0x407360
cmp byte [0x416c9d], 2
je 0x40736c
cmp byte [0x416c9d], 4
je 0x40737a
cmp byte [0x416c9d], 6
je 0x407388
shr edx, cl
mov dword [ebx], edx
mov dword [ebx + 4], 0
jmp 0x406af1
cmp edx, 0xffffffff
jne 0x407350
cmp eax, 0xffffff80
jb 0x407350
jmp 0x407398
cmp edx, 0xffffffff
jne 0x407350
cmp eax, 0xffff8000
jb 0x407350
jmp 0x407398
cmp edx, 0xffffffff
jne 0x407350
cmp eax, 0x80000000
jb 0x407350
jmp 0x407398
cmp edx, 0xffff8000
jb 0x407350
and edx, 0xffff
jmp 0x407350
mov dword [ebx], 0
mov dword [ebx + 4], 0
jmp 0x406af1
cmp word [edi + 8], 0
jne 0x401a22
cmp byte [edi + 0xc], 0
je 0x4073d8
cmp dword [0x416bec], 0
jne 0x4073d8
mov eax, dword [0x416b78]
mov dword [0x416bec], eax
mov dword [0x416bf0], 0x401acc
cmp byte [0x416c9d], 1
je 0x407409
cmp byte [0x416c9d], 2
je 0x407426
cmp byte [0x416c9d], 4
je 0x40743e
cmp byte [0x416c9d], 6
je 0x40744e
not dword [edi]
not dword [edi + 4]
add edi, 0x14
jmp 0x406af1
cmp dword [edi + 4], 0
jne 0x4073fc
cmp word [edi + 2], 0
jne 0x4073fc
cmp byte [edi + 1], 0
jne 0x4073fc
not byte [edi]
add edi, 0x14
jmp 0x406af1
cmp dword [edi + 4], 0
jne 0x4073fc
cmp word [edi + 2], 0
jne 0x4073fc
not word [edi]
add edi, 0x14
jmp 0x406af1
cmp dword [edi + 4], 0
jne 0x4073fc
not dword [edi]
add edi, 0x14
jmp 0x406af1
cmp word [edi + 6], 0
jne 0x4073fc
not dword [edi]
not word [edi + 4]
add edi, 0x14
jmp 0x406af1
cmp word [edi + 8], 0
jne 0x401a22
cmp byte [edi + 0xc], 0
je 0x407491
cmp dword [0x416bec], 0
jne 0x407491
mov eax, dword [0x416b78]
mov dword [0x416bec], eax
mov dword [0x416bf0], 0x401acc
mov eax, dword [edi]
mov edx, dword [edi + 4]
mov dword [edi], 0
mov dword [edi + 4], 0
sub dword [edi], eax
sbb dword [edi + 4], edx
add edi, 0x14
jmp 0x406af1
cmp word [edi + 8], 0
jne 0x401a22
cmp byte [0x416ca7], 5
je 0x407584
cmp byte [0x416ca7], 4
je 0x407594
cmp byte [0x416ca7], 3
jne 0x401a22
test dword [0x416c40], 8
jne 0x407538
mov al, 2
bt dword [0x416c44], 0
jb 0x4074fc
xor al, al
cmp byte [edi + 0xc], al
je 0x40751e
cmp dword [0x416bec], 0
jne 0x40751e
mov eax, dword [0x416b78]
mov dword [0x416bec], eax
mov dword [0x416bf0], 0x401acc
mov byte [edi + 0xc], 0
mov eax, dword [0x416b64]
mov eax, dword [eax + 0x34]
cdq
sub dword [edi], eax
sbb dword [edi + 4], edx
add edi, 0x14
jmp 0x406af1
mov al, 4
bt dword [0x416c44], 0
jb 0x407546
xor al, al
cmp byte [edi + 0xc], al
je 0x407568
cmp dword [0x416bec], 0
jne 0x407568
mov eax, dword [0x416b78]
mov dword [0x416bec], eax
mov dword [0x416bf0], 0x401acc
mov byte [edi + 0xc], 0
mov eax, dword [0x416b64]
mov edx, dword [eax + 0x34]
mov eax, dword [eax + 0x30]
sub dword [edi], eax
sbb dword [edi + 4], edx
add edi, 0x14
jmp 0x406af1
test dword [0x416c40], 9
jne 0x401a22
mov dl, 5
cmp byte [edi + 0xc], 2
je 0x4075b9
cmp dword [0x416bec], 0
jne 0x4075b9
mov eax, dword [0x416b78]
mov dword [0x416bec], eax
mov dword [0x416bf0], 0x401acc
mov byte [edi + 0xc], dl
add edi, 0x14
jmp 0x406af1
cmp word [edi + 8], 0
jne 0x401a22
cmp byte [0x416ca7], 5
jne 0x401a22
test dword [0x416c40], 1
jne 0x401a22
mov dl, 6
mov dh, 2
test dword [0x416c40], 8
je 0x4075fe
mov dh, 4
mov eax, dword [edi]
or eax, dword [edi + 4]
jne 0x40759c
cmp byte [edi + 0xc], dh
jne 0x40759c
mov eax, dword [edi + 0x10]
cmp byte [eax], 0x80
jne 0x40759c
jmp 0x4075b9
inc esi
mov word [edi + 8], 0
mov byte [edi + 0xc], 0
mov al, byte [0x416c9d]
cmp al, 4
je 0x40771a
cmp al, 8
je 0x40779c
jmp 0x401a36
xor eax, eax
cmp word [esi + 8], 0x8000
je 0x407789
mov bx, word [esi + 8]
mov eax, dword [esi + 4]
shl eax, 1
shr eax, 9
jae 0x407742
inc eax
bt eax, 0x17
jae 0x407742
and eax, 0x7fffff
inc bx
shr eax, 1
add bx, 0x7f
cmp bx, 0xff
jge 0x401a40
cmp bx, 0
jg 0x407784
or eax, 0x800000
mov cx, bx
neg cx
inc cx
cmp cx, 0x17
ja 0x401a40
xor bx, bx
shr eax, cl
jae 0x407784
inc eax
test eax, 0x800000
je 0x407784
and eax, 0x7fffff
inc bx
shl ebx, 0x17
or eax, ebx
mov bl, byte [esi + 0xb]
shl ebx, 0x1f
or eax, ebx
mov dword [edi], eax
xor eax, eax
mov dword [edi + 4], eax
add esi, 0xd
ret
xor eax, eax
xor edx, edx
cmp word [esi + 8], 0x8000
je 0x407844
mov bx, word [esi + 8]
mov eax, dword [esi]
mov edx, dword [esi + 4]
add eax, eax
adc edx, edx
mov ecx, edx
shr edx, 0xc
shrd eax, ecx, 0xc
jae 0x4077dc
add eax, 1
adc edx, 0
bt edx, 0x14
jae 0x4077dc
and edx, 0xfffff
inc bx
shr edx, 1
rcr eax, 1
add bx, 0x3ff
cmp bx, 0x7ff
jge 0x401a40
cmp bx, 0
jg 0x40783f
or edx, 0x100000
mov cx, bx
neg cx
inc cx
cmp cx, 0x34
ja 0x401a40
cmp cx, 0x20
jbe 0x40781c
sub cx, 0x20
mov eax, edx
xor edx, edx
shr eax, cl
jmp 0x407823
mov ebx, edx
shr edx, cl
shrd eax, ebx, cl
mov bx, 0
jae 0x40783f
add eax, 1
adc edx, 0
test edx, 0x100000
je 0x40783f
and edx, 0xfffff
inc bx
shl ebx, 0x14
or edx, ebx
mov bl, byte [esi + 0xb]
shl ebx, 0x1f
or edx, ebx
mov dword [edi], eax
mov dword [edi + 4], edx
add esi, 0xd
ret
inc esi
lodsd eax, dword [esi]
mov ecx, eax
cmp ecx, 8
ja 0x401a40
mov edx, edi
xor eax, eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov edi, edx
rep movsb byte es:[edi], byte [esi]
mov edi, edx
inc esi
mov word [edi + 8], 0
mov byte [edi + 0xc], 0
ret