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

Disassembly:
push 0x416bed
jmp fcn.004019f4
mov dword [0x41723c], edi
mov byte [0x4172ed], 0
cmp byte [esi], 0
je 0x407a60
cmp byte [esi], 0x2e
je 0x407872
lodsb al, byte [esi]
cmp al, 1
je 0x406cfa
cmp al, 2
je 0x406d1b
cmp al, 4
je 0x406d26
cmp al, 8
je 0x406d2c
cmp al, 0xf
je 0x4018e9
cmp al, 0x10
je 0x406d30
cmp al, 0x11
je 0x406d51
cmp al, 0x29
je 0x406ce3
cmp al, 0x5d
je 0x406ce3
cmp al, 0x21
je 0x4018cb
sub edi, 0x14
mov ebx, edi
sub ebx, 0x14
cmp al, 0xe0
je 0x40761d
cmp al, 0xe1
je 0x4076e0
cmp al, 0xd0
je 0x407550
cmp al, 0x83
je 0x4075e2
mov dx, word [ebx + 8]
or dx, word [edi + 8]
cmp al, 0x80
je 0x406f63
cmp al, 0x81
je 0x40700f
mov ah, byte [ebx + 0xc]
or ah, byte [edi + 0xc]
je 0x406c95
call fcn.00407af0
cmp al, 0x90
je 0x407084
cmp al, 0x91
je 0x4071cd
or dx, dx
jne 0x4018cb
cmp al, 0xa0
je 0x40722c
cmp al, 0xb0
je 0x407242
cmp al, 0xb1
je 0x407257
cmp al, 0xb2
je 0x40726c
cmp al, 0xc0
je 0x4073a2
cmp al, 0xc1
je 0x407444
jmp 0x4018cb
sub edi, 0x14
cmp byte [0x4172ed], 0
je 0x406cf9
xor eax, eax
mov dword [edi], eax
mov dword [edi + 4], eax
mov dword [edi + 0xc], eax
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 word [edi + 4], 0
mov dword [edi + 8], 0
add edi, 0xc
jmp 0x406bf7
xor eax, eax
lodsw ax, word [esi]
stosd dword es:[edi], eax
xor ax, ax
stosd dword es:[edi], eax
jmp 0x406d01
movsd dword es:[edi], dword [esi]
xor eax, eax
stosd dword es:[edi], eax
jmp 0x406d01
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
jmp 0x406d01
mov byte [edi + 9], 0
mov word [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 0x406bf7
xor eax, eax
mov dword [edi + 8], eax
mov dword [edi + 0xc], eax
mov dword [edi + 0x14], eax
lodsd eax, dword [esi]
cmp eax, 0xf
jb 0x406ed8
je 0x4019a2
mov ebx, eax
mov ax, word [0x417192]
mov word [ebx + 0x12], ax
mov cl, byte [ebx + 9]
shr cl, 1
and cl, 1
neg cl
or byte [ebx + 8], 8
test byte [ebx + 8], 1
je 0x406f08
cmp ax, word [ebx + 0x10]
je 0x406dde
test byte [ebx + 8], 4
jne 0x406ef2
test byte [ebx + 9], 1
je 0x406dde
mov eax, dword [ebx]
sub eax, dword [0x417268]
stosd dword es:[edi], eax
mov eax, dword [ebx + 4]
sbb eax, dword [0x41726c]
stosd dword es:[edi], eax
sbb cl, byte [0x4172fb]
mov byte [edi + 5], cl
mov eax, dword [0x417268]
or al, byte [0x4172fb]
or eax, dword [0x41726c]
je 0x406de8
or byte [0x4172f5], 0xff
jmp 0x406de8
mov eax, dword [ebx]
stosd dword es:[edi], eax
mov eax, dword [ebx + 4]
stosd dword es:[edi], eax
mov byte [edi + 5], cl
cmp dword [0x41718c], 0
je 0x406dff
cmp byte [0x4172f5], 0
jne 0x406dff
call fcn.0040784c
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 0x406bf7
cmp byte [0x4172d9], 0xff
je 0x406bf7
cmp byte [0x4172d9], 0
je 0x406e4b
cmp byte [0x4172d8], 0
jne 0x406bf7
mov byte [0x4172d8], al
jmp 0x406bf7
xchg byte [0x4172d8], al
or al, al
je 0x406bf7
cmp al, byte [0x4172d8]
jne 0x40188f
jmp 0x406bf7
mov eax, dword [0x41723c]
xor edx, edx
xor ch, ch
sub eax, dword [0x417200]
sbb edx, dword [0x417204]
sbb ch, byte [0x4172fa]
jp 0x406e8c
call fcn.00407ac9
stosd dword es:[edi], eax
mov eax, edx
stosd dword es:[edi], eax
mov eax, dword [0x417208]
stosd dword es:[edi], eax
mov cl, byte [0x4172f7]
mov word [edi], cx
mov eax, dword [0x41720c]
mov dword [edi + 4], eax
add edi, 8
jmp 0x406bf7
mov eax, dword [0x417210]
jmp 0x406e6f
mov eax, dword [0x41721c]
stosd dword es:[edi], eax
xor eax, eax
stosd dword es:[edi], eax
add edi, 0xc
jmp 0x406bf7
call fcn.004016ac
stosd dword es:[edi], eax
mov eax, edx
stosd dword es:[edi], eax
add edi, 0xc
jmp 0x406bf7
or eax, eax
je 0x406e6a
cmp eax, 1
je 0x406eb6
cmp eax, 2
je 0x406ec7
cmp eax, 3
je 0x406eaf
mov edx, 0x4018df
jmp 0x406f1c
mov edx, 0x40194a
cmp dword [0x417228], 0
jne 0x406f1c
mov dword [0x417224], ebx
jmp 0x406f1c
mov edx, 0x4018f3
cmp dword [0x417228], 0
jne 0x406f1c
mov dword [0x417224], ebx
cmp word [0x417192], 1
ja 0x406f2d
or byte [0x4172f5], 0xff
or byte [0x4172ed], 0xff
mov word [edi + 0xc], 0
xor eax, eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
add edi, 0xc
cmp dword [0x417228], 0
jne 0x406bf7
mov eax, dword [0x4171b4]
mov dword [0x417228], eax
mov dword [0x41722c], edx
jmp 0x406bf7
mov ecx, dword [ebx + 0x10]
cmp byte [edi + 0xc], 0
je 0x406f7a
mov ecx, dword [edi + 0x10]
cmp byte [ebx + 0xc], 0
je 0x406f7a
call fcn.00407af0
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
mov al, byte [edi + 0xd]
adc byte [ebx + 0xd], al
jp 0x406f9a
call fcn.00407ac9
or dx, dx
je 0x406bf7
push esi
mov esi, ebx
lea ebx, [edi + 0xa]
mov cl, byte [edi + 8]
call fcn.00406fc2
lea ebx, [edi + 0xb]
mov cl, byte [edi + 9]
call fcn.00406fc2
pop esi
jmp 0x406bf7
xor ah, ah
mov ah, byte [ebx + 0xc]
mov al, byte [edi + 0xc]
or al, al
je 0x40702e
cmp al, ah
jne 0x407029
xor ah, ah
mov ecx, dword [edi + 0x10]
cmp ecx, dword [ebx + 0x10]
je 0x40702e
call fcn.00407af0
mov byte [ebx + 0xc], ah
mov eax, dword [edi]
sub dword [ebx], eax
mov eax, dword [edi + 4]
sbb dword [ebx + 4], eax
mov al, byte [edi + 0xd]
sbb byte [ebx + 0xd], al
jp 0x407051
cmp dword [0x417228], 0
jne 0x407051
call fcn.00407ac9
or dx, dx
je 0x406bf7
push esi
mov esi, ebx
lea ebx, [edi + 0xa]
mov cl, byte [edi + 8]
call fcn.00407079
lea ebx, [edi + 0xb]
mov cl, byte [edi + 9]
call fcn.00407079
pop esi
jmp 0x406bf7
or dx, dx
je 0x4070a3
cmp word [ebx + 8], 0
jne 0x4070a3
xor ecx, ecx
mov eax, dword [ebx + ecx]
xchg dword [edi + ecx], eax
mov dword [ebx + ecx], eax
add ecx, 4
cmp ecx, 0x10
jb 0x407092
push esi
push edx
mov esi, ebx
xor bl, bl
cmp byte [esi + 0xd], 0
je 0x4070ce
mov eax, dword [esi]
mov edx, dword [esi + 4]
not eax
not edx
add eax, 1
adc edx, 0
mov dword [esi], eax
mov dword [esi + 4], edx
or eax, edx
je 0x4018e9
xor bl, 0xff
cmp byte [edi + 0xd], 0
je 0x4070f3
mov eax, dword [edi]
mov edx, dword [edi + 4]
not eax
not edx
add eax, 1
adc edx, 0
mov dword [edi], eax
mov dword [edi + 4], edx
or eax, edx
je 0x4018e9
xor bl, 0xff
cmp dword [esi + 4], 0
je 0x407105
cmp dword [edi + 4], 0
je 0x407105
jne 0x4018e9
mov eax, dword [esi + 4]
mul dword [edi]
or edx, edx
jne 0x4018e9
mov ecx, eax
mov eax, dword [esi]
mul dword [edi + 4]
or edx, edx
jne 0x4018e9
add ecx, eax
jb 0x4018e9
mov eax, dword [esi]
mul dword [edi]
add edx, ecx
jb 0x4018e9
mov dword [esi], eax
mov dword [esi + 4], edx
or bl, bl
je 0x407153
not eax
not edx
add eax, 1
adc edx, 0
mov dword [esi], eax
mov dword [esi + 4], edx
or eax, edx
jne 0x407153
not bl
mov byte [esi + 0xd], bl
pop edx
or dx, dx
je 0x4071af
cmp word [edi + 8], 0
jne 0x4018df
cmp byte [esi + 8], 0
je 0x40718b
call fcn.004071b5
imul byte [esi + 0xa]
mov dl, ah
cbw
cmp ah, dl
jne 0x4018e9
mov byte [esi + 0xa], al
or al, al
jne 0x40718b
mov byte [esi + 8], al
cmp byte [esi + 9], 0
je 0x4071af
call fcn.004071b5
imul byte [esi + 0xb]
mov dl, ah
cbw
cmp ah, dl
jne 0x4018e9
mov byte [esi + 0xb], al
or al, al
jne 0x4071af
mov byte [esi + 9], al
pop esi
jmp 0x406bf7
push esi
push edx
mov esi, ebx
call fcn.00407730
pop edx
or dx, dx
je 0x407226
cmp byte [esi + 8], 0
je 0x407201
call fcn.004071b5
or al, al
je 0x4018e9
mov al, byte [esi + 0xa]
cbw
idiv byte [edi]
or ah, ah
jne 0x40198d
mov byte [esi + 0xa], al
cmp byte [esi + 9], 0
je 0x407226
call fcn.004071b5
or al, al
je 0x4018e9
mov al, byte [esi + 0xb]
cbw
idiv byte [edi]
or ah, ah
jne 0x40198d
mov byte [esi + 0xb], al
pop esi
jmp 0x406bf7
push esi
mov esi, ebx
call fcn.00407730
mov dword [esi], eax
mov dword [esi + 4], edx
mov byte [esi + 0xd], bh
pop esi
jmp 0x406bf7
mov eax, dword [edi]
mov edx, dword [edi + 4]
mov cl, byte [edi + 0xd]
and dword [ebx], eax
and dword [ebx + 4], edx
and byte [ebx + 0xd], cl
jmp 0x406bf7
mov eax, dword [edi]
mov edx, dword [edi + 4]
mov cl, byte [edi + 0xd]
or dword [ebx], eax
or dword [ebx + 4], edx
or byte [ebx + 0xd], cl
jmp 0x406bf7
mov eax, dword [edi]
mov edx, dword [edi + 4]
mov cl, byte [edi + 0xd]
xor dword [ebx], eax
xor dword [ebx + 4], edx
xor byte [ebx + 0xd], cl
je 0x406bf7
or cl, cl
je 0x40728b
xor eax, dword [ebx]
xor edx, dword [ebx + 4]
mov cl, byte [0x4172e9]
cmp cl, 1
je 0x407343
cmp cl, 2
je 0x407309
cmp cl, 4
je 0x4072ea
cmp cl, 6
je 0x4072c0
cmp cl, 8
jne 0x406bf7
xor edx, dword [ebx + 4]
js 0x407387
jmp 0x406bf7
test edx, 0xffff0000
jne 0x406bf7
cmp word [ebx + 6], 0xffff
jne 0x406bf7
xor dx, word [ebx + 4]
jns 0x406bf7
not word [ebx + 6]
jmp 0x407387
test edx, edx
jne 0x406bf7
cmp dword [ebx + 4], 0xffffffff
jne 0x406bf7
xor eax, dword [ebx]
jns 0x406bf7
not dword [ebx + 4]
jmp 0x407387
test edx, edx
jne 0x406bf7
test eax, 0xffff0000
jne 0x406bf7
cmp dword [ebx + 4], 0xffffffff
jne 0x406bf7
cmp word [ebx + 2], 0xffff
jne 0x406bf7
xor ax, word [ebx]
jns 0x406bf7
not dword [ebx + 4]
not word [ebx + 2]
jmp 0x407387
test edx, edx
jne 0x406bf7
test eax, 0xffffff00
jne 0x406bf7
cmp dword [ebx + 4], 0xffffffff
jne 0x406bf7
cmp word [ebx + 2], 0xffff
jne 0x406bf7
cmp byte [ebx + 1], 0xff
jne 0x406bf7
xor al, byte [ebx]
jns 0x406bf7
not dword [ebx + 4]
not word [ebx + 2]
not byte [ebx + 1]
mov byte [ebx + 0xd], 0
jmp 0x406bf7
mov byte [edi + 0xd], 0
not dword [edi]
not dword [edi + 4]
add dword [edi], 1
adc dword [edi + 4], 0
jb 0x4073d8
cmp byte [edi + 0xd], 0
jne 0x40742f
mov edx, dword [ebx + 4]
mov eax, dword [ebx]
cmp dword [edi + 4], 0
jne 0x4073d8
movsx ecx, byte [ebx + 0xd]
xchg dword [edi], ecx
cmp ecx, 0x40
je 0x4073e2
ja 0x4073d8
cmp ecx, 0x20
jae 0x407402
shld dword [edi], edx, cl
shld edx, eax, cl
shl eax, cl
mov dword [ebx], eax
mov dword [ebx + 4], edx
jmp 0x40741e
cmp byte [ebx + 0xd], 0
jne 0x4018e9
movsx ecx, byte [ebx + 0xd]
cmp eax, ecx
jne 0x4018e9
cmp edx, ecx
jne 0x4018e9
xor eax, eax
mov dword [ebx], eax
mov dword [ebx + 4], eax
jmp 0x406bf7
sub cl, 0x20
shld dword [edi], edx, cl
shld edx, eax, cl
shl eax, cl
mov dword [ebx + 4], eax
mov dword [ebx], 0
cmp edx, dword [edi]
jne 0x4018e9
movsx eax, byte [ebx + 0xd]
cmp eax, dword [edi]
jne 0x4018e9
jmp 0x406bf7
mov byte [edi + 0xd], 0
not dword [edi]
not dword [edi + 4]
add dword [edi], 1
adc dword [edi + 4], 0
jae 0x407444
dec dword [edi + 4]
cmp byte [edi + 0xd], 0
jne 0x407390
cmp byte [ebx + 0xd], 0
je 0x407483
mov al, byte [0x4172e9]
cmp al, 1
je 0x4074cf
cmp al, 2
je 0x4074f3
cmp al, 4
je 0x407516
cmp al, 6
je 0x407532
cmp al, 8
jne 0x407483
test byte [ebx + 7], 0x80
je 0x407483
mov byte [ebx + 0xd], 0
mov edx, dword [ebx + 4]
mov eax, dword [ebx]
cmp dword [edi + 4], 0
jne 0x4074c1
mov ecx, dword [edi]
cmp ecx, 0x40
jae 0x4074c1
push esi
movsx esi, byte [ebx + 0xd]
cmp ecx, 0x20
jae 0x4074b0
shrd eax, edx, cl
shrd edx, esi, cl
mov dword [ebx], eax
mov dword [ebx + 4], edx
pop esi
jmp 0x406bf7
sub cl, 0x20
shrd edx, esi, cl
mov dword [ebx], edx
mov dword [ebx + 4], esi
pop esi
jmp 0x406bf7
movsx eax, byte [ebx + 0xd]
mov dword [ebx], eax
mov dword [ebx + 4], eax
jmp 0x406bf7
cmp dword [ebx + 4], 0xffffffff
jne 0x407483
cmp word [ebx + 2], 0xffff
jne 0x407483
cmp byte [ebx + 1], 0xff
jne 0x407483
test byte [ebx], 0x80
je 0x407483
not dword [ebx + 4]
not word [ebx + 2]
not byte [ebx + 1]
jmp 0x40747f
cmp dword [ebx + 4], 0xffffffff
jne 0x407483
cmp word [ebx + 2], 0xffff
jne 0x407483
test byte [ebx + 1], 0x80
je 0x407483
not dword [ebx + 4]
not word [ebx + 2]
jmp 0x40747f
cmp dword [ebx + 4], 0xffffffff
jne 0x407483
test byte [ebx + 3], 0x80
je 0x407483
not dword [ebx + 4]
jmp 0x40747f
cmp word [ebx + 6], 0xffff
jne 0x407483
test byte [ebx + 5], 0x80
je 0x407483
not word [ebx + 6]
jmp 0x40747f
cmp word [edi + 8], 0
jne 0x4018cb
cmp byte [edi + 0xc], 0
je 0x407566
call fcn.00407af0
mov al, byte [0x4172e9]
cmp al, 1
je 0x4075a0
cmp al, 2
je 0x4075b7
cmp al, 4
je 0x4075c9
cmp al, 6
je 0x4075d3
cmp al, 8
je 0x40758f
not dword [edi]
not dword [edi + 4]
not byte [edi + 0xd]
add edi, 0x14
jmp 0x406bf7
not dword [edi]
not dword [edi + 4]
mov byte [edi + 0xd], 0
add edi, 0x14
jmp 0x406bf7
cmp dword [edi + 4], 0
jne 0x40758f
cmp word [edi + 2], 0
jne 0x40758f
cmp byte [edi + 1], 0
jne 0x40758f
not byte [edi]
jmp 0x407594
cmp dword [edi + 4], 0
jne 0x40758f
cmp word [edi + 2], 0
jne 0x40758f
not word [edi]
jmp 0x407594
cmp dword [edi + 4], 0
jne 0x40758f
not dword [edi]
jmp 0x407594
cmp word [edi + 6], 0
jne 0x40758f
not word [edi + 4]
not dword [edi]
jmp 0x407594
cmp word [edi + 8], 0
jne 0x4018cb
cmp byte [edi + 0xc], 0
je 0x4075f8
call fcn.00407af0
xor eax, eax
xor edx, edx
xor cl, cl
xchg dword [edi], eax
xchg dword [edi + 4], edx
xchg byte [edi + 0xd], cl
sub dword [edi], eax
sbb dword [edi + 4], edx
sbb byte [edi + 0xd], cl
jp 0x407615
call fcn.00407ac9
add edi, 0x14
jmp 0x406bf7
cmp word [edi + 8], 0
jne 0x4018cb
mov al, byte [0x4172f6]
cmp al, 5
je 0x4076b8
cmp al, 4
je 0x4076c8
cmp al, 3
jne 0x4018cb
test dword [0x41727c], 8
jne 0x40768f
mov al, 2
bt dword [0x417280], 0
jb 0x40765f
xor al, al
cmp byte [edi + 0xc], al
je 0x407669
call fcn.00407af0
mov byte [edi + 0xc], 0
mov eax, dword [0x4171a0]
mov eax, dword [eax + 0x34]
xor edx, edx
sub dword [edi], eax
sbb dword [edi + 4], edx
sbb byte [edi + 0xd], 0
jp 0x407687
call fcn.00407ac9
add edi, 0x14
jmp 0x406bf7
mov al, 4
bt dword [0x417280], 0
jb 0x40769d
xor al, al
cmp byte [edi + 0xc], al
je 0x4076a7
call fcn.00407af0
mov byte [edi + 0xc], 0
mov eax, dword [0x4171a0]
mov edx, dword [eax + 0x34]
mov eax, dword [eax + 0x30]
jmp 0x407677
test dword [0x41727c], 9
jne 0x4018cb
mov dl, 5
cmp byte [edi + 0xc], 2
je 0x4076d5
call fcn.00407af0
mov byte [edi + 0xc], dl
add edi, 0x14
jmp 0x406bf7
cmp word [edi + 8], 0
jne 0x4018cb
cmp byte [0x4172f6], 5
jne 0x4018cb
test dword [0x41727c], 1
jne 0x4018cb
mov dl, 6
mov dh, 2
test dword [0x41727c], 8
je 0x40771a
mov dh, 4
mov eax, dword [edi]
or eax, dword [edi + 4]
jne 0x4076d0
cmp byte [edi + 0xc], dh
jne 0x4076d0
mov eax, dword [edi + 0x10]
cmp byte [eax], 0x80
jne 0x4076d0
jmp 0x4076d5
inc esi
mov word [edi + 8], 0
mov word [edi + 0xc], 0
mov al, byte [0x4172e9]
cmp al, 2
je 0x407955
cmp al, 4
je 0x4079de
test al, 0xf7
jne 0x4018df
xor eax, eax
xor edx, edx
cmp word [esi + 8], 0x8000
je 0x407944
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 0x4078dc
add eax, 1
adc edx, 0
bt edx, 0x14
jae 0x4078dc
and edx, 0xfffff
inc bx
shr edx, 1
rcr eax, 1
add bx, 0x3ff
cmp bx, 0x7ff
jge 0x4018e9
cmp bx, 0
jg 0x40793f
or edx, 0x100000
mov cx, bx
neg cx
inc cx
cmp cx, 0x34
ja 0x4018e9
cmp cx, 0x20
jbe 0x40791c
sub cx, 0x20
mov eax, edx
xor edx, edx
shr eax, cl
jmp 0x407923
mov ebx, edx
shr edx, cl
shrd eax, ebx, cl
mov bx, 0
jae 0x40793f
add eax, 1
adc edx, 0
test edx, 0x100000
je 0x40793f
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
xor eax, eax
cmp word [esi + 8], 0x8000
je 0x4079c9
mov bx, word [esi + 8]
mov ax, word [esi + 6]
shl ax, 1
shr ax, 6
jae 0x407982
inc ax
bt ax, 0xa
jae 0x407982
and ax, 0x3ff
inc bx
shr ax, 1
add bx, 0xf
cmp bx, 0x1f
jge 0x4018e9
cmp bx, 0
jg 0x4079c2
or ax, 0x400
mov cx, bx
neg cx
inc cx
cmp cx, 0xa
ja 0x4018e9
xor bx, bx
shr ax, cl
jae 0x4079c2
inc ax
test ax, 0x400
je 0x4079c2
and ax, 0x3ff
inc bx
shl bx, 0xa
or ax, bx
mov bl, byte [esi + 0xb]
shl bx, 0xf
or ax, bx
mov dword [edi], eax
xor eax, eax
mov dword [edi + 4], eax
add esi, 0xd
ret
xor eax, eax
cmp word [esi + 8], 0x8000
je 0x407a4d
mov bx, word [esi + 8]
mov eax, dword [esi + 4]
shl eax, 1
shr eax, 9
jae 0x407a06
inc eax
bt eax, 0x17
jae 0x407a06
and eax, 0x7fffff
inc bx
shr eax, 1
add bx, 0x7f
cmp bx, 0xff
jge 0x4018e9
cmp bx, 0
jg 0x407a48
or eax, 0x800000
mov cx, bx
neg cx
inc cx
cmp cx, 0x17
ja 0x4018e9
xor bx, bx
shr eax, cl
jae 0x407a48
inc eax
test eax, 0x800000
je 0x407a48
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
inc esi
lodsd eax, dword [esi]
mov ecx, eax
cmp ecx, 8
ja 0x4018e9
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 word [edi + 0xc], 0
ret