Function at 0x41367f
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x610
mov al, byte [esp + 0x148]
mov byte [esp + 0x14c], al
mov byte [esp + 0x354], 0x33
mov byte [esp + 0x355], 0x91
mov eax, 2
mov byte [esp + eax + 0x354], 0
add eax, 1
cmp eax, 7
jne 0x412972
xor eax, eax
cmp eax, 7
jae 0x4129e6
movzx edx, byte [esp + eax + 0x354]
mov ecx, eax
add ecx, 0xb3f957a4
mov esi, eax
add esi, 0xa4
and esi, edx
mov ebx, esi
and ebx, 0xfd
mov edi, esi
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, esi
and ebx, 2
or esi, 2
imul esi, ebx
add esi, edi
add ecx, edx
sub ecx, esi
mov edx, ecx
and edx, 0x35
xor edx, 0x35
and ecx, 0xca
sub ecx, edx
add cl, 1
mov byte [esp + eax + 0x354], cl
add eax, 1
jmp 0x412984
lea eax, [esp + 0x354]
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004047a0
mov ebx, eax
cmp ebx, 0
jne 0x412a0a
xor eax, eax
jmp 0x415714
xor edi, edi
jmp 0x412a0e
mov dword [esp], ebx
call fcn.004049b0
cmp edi, eax
jb 0x412a21
mov al, 1
jmp 0x415714
mov dword [esp], ebx
mov dword [esp + 4], edi
call fcn.004049c0
mov dword [esp + 0x24], eax
mov al, byte [esp + 0x144]
mov byte [esp + 0x150], al
mov byte [esp + 0x54], 0x3c
mov byte [esp + 0x55], 0x89
mov eax, 2
mov byte [esp + eax + 0x54], 0
add eax, 1
cmp eax, 4
jne 0x412a4e
mov dword [esp + 0x28], edi
xor eax, eax
cmp eax, 4
jae 0x412ab6
movzx edx, byte [esp + eax + 0x54]
mov esi, eax
and esi, 0x640d42a2
mov edi, eax
and edi, 0x640d42a2
xor edi, 0xffffffff
mov ecx, eax
add ecx, 0x640d42a3
add ecx, edi
add ecx, esi
xor ecx, edx
add ecx, 0xe550b686
mov edx, ecx
xor edx, 0xb0
shl ecx, 1
and ecx, 0x9e
sub ecx, edx
mov byte [esp + eax + 0x54], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x412a61
lea eax, [esp + 0x54]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00404950
cmp eax, 0
setne al
mov cl, al
xor cl, 0xff
xor al, 0xff
and cl, al
or cl, 0
xor cl, 0xff
or cl, 0
xor cl, 0xff
test cl, 1
mov edi, dword [esp + 0x28]
jne 0x412af8
jmp 0x412afd
jmp 0x415705
mov al, byte [esp + 0x140]
mov byte [esp + 0x154], al
mov byte [esp + 0x34c], 0x74
mov byte [esp + 0x34d], 0xe1
mov eax, 2
mov byte [esp + eax + 0x34c], 0
add eax, 1
cmp eax, 7
jne 0x412b20
xor eax, eax
cmp eax, 7
jae 0x412b6b
mov dl, byte [esp + eax + 0x34c]
movzx esi, dl
mov ecx, eax
add ecx, 0x9c167e58
mov edi, ecx
and edi, esi
shl edi, 1
sub ecx, edi
add cl, dl
add cl, 0x48
mov byte [esp + eax + 0x34c], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x412b32
lea eax, [esp + 0x34c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00404730
fnstcw word [esp + 0x62]
movzx eax, word [esp + 0x62]
or eax, 0xc00
mov word [esp + 0x21e], ax
fldcw word [esp + 0x21e]
fistp dword [esp + 0x3c0]
fldcw word [esp + 0x62]
mov eax, dword [esp + 0x3c0]
mov ecx, eax
sub ecx, 3
mov edi, dword [esp + 0x28]
ja 0x415703
mov eax, dword [eax*4 + 0x4426fc]
jmp eax
mov al, byte [esp + 0x13c]
mov byte [esp + 0x158], al
mov byte [esp + 0x50], 0x6c
mov byte [esp + 0x51], 0xfb
mov eax, 2
mov byte [esp + eax + 0x50], 0
add eax, 1
cmp eax, 4
jne 0x412be6
xor eax, eax
cmp eax, 4
jae 0x412c4d
movzx edx, byte [esp + eax + 0x50]
mov ecx, eax
add ecx, 0xe61ebdab
mov esi, 0x54
sub esi, eax
mov edi, 0x54
sub edi, eax
or esi, edi
mov edi, 0x54
sub edi, eax
and edi, esi
or ecx, edx
xor edx, 0xffffffff
or edi, edx
and ecx, edi
mov edi, dword [esp + 0x28]
mov edx, ecx
and edx, 1
mov esi, ecx
and esi, 1
xor ecx, 1
add ecx, 0xa8
or ecx, esi
add edx, ecx
mov byte [esp + eax + 0x50], dl
add eax, 1
jmp 0x412bf5
lea eax, [esp + 0x50]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00404950
cmp eax, 0
setne al
test al, 1
jne 0x412c78
jmp 0x412fd6
mov al, byte [esp + 0x130]
mov byte [esp + 0x15c], al
mov byte [esp + 0x134], 0x9b
mov byte [esp + 0x135], 0x67
mov byte [esp + 0x136], 0x66
mov byte [esp + 0x137], 0x61
mov eax, 4
mov byte [esp + eax + 0x134], 0
add eax, 1
cmp eax, 6
jne 0x412cab
xor eax, eax
cmp eax, 6
jae 0x412d05
movzx edx, byte [esp + eax + 0x134]
mov ecx, eax
add ecx, 0x4b2ee719
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
mov edx, ecx
sub edx, esi
shl ecx, 1
and ecx, 2
xor edx, 1
add edx, 0x82
add edx, ecx
mov byte [esp + eax + 0x134], dl
mov ecx, eax
xor ecx, 0xfffffffe
or eax, 1
mov edx, eax
and edx, ecx
add eax, edx
jmp 0x412cbd
mov eax, dword [esp + 0x134]
mov cl, byte [esp + 0x12c]
mov byte [esp + 0x160], cl
mov byte [esp + 0x344], 0xb3
mov byte [esp + 0x345], 0x27
mov ecx, 2
mov byte [esp + ecx + 0x344], 0
add ecx, 1
cmp ecx, 7
jne 0x412d2f
mov dword [esp + 0x2c], ebx
xor ecx, ecx
cmp ecx, 7
jae 0x412d92
mov dl, byte [esp + ecx + 0x344]
mov dh, cl
add dh, 0x79
xor dh, dl
add dh, 0xa3
mov byte [esp + ecx + 0x344], dh
mov ebx, ecx
xor ebx, 0xfffffffe
mov edx, ecx
or edx, 1
and edx, ebx
mov ebx, edx
and ebx, 5
mov esi, edx
and esi, 2
xor esi, 2
imul esi, ebx
mov ebx, edx
and ebx, 2
or edx, 2
imul edx, ebx
add edx, esi
xor ecx, 1
add ecx, edx
jmp 0x412d45
lea ecx, [esp + 0x344]
mov edx, dword [esp + 0x24]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.00404950
cmp eax, 0
mov ebx, dword [esp + 0x2c]
je 0x412fd6
mov al, byte [esp + 0x128]
mov byte [esp + 0x164], al
mov byte [esp + 0x4c], 6
mov byte [esp + 0x4d], 0x89
mov eax, 2
mov byte [esp + eax + 0x4c], 0
add eax, 1
cmp eax, 4
jne 0x412dd7
xor eax, eax
cmp eax, 4
jae 0x412e36
movzx edx, byte [esp + eax + 0x4c]
mov ecx, 0x5d
sub ecx, eax
mov esi, 0x5d
sub esi, eax
and ecx, esi
xor ecx, 0xffffffff
and ecx, edx
mov esi, eax
add esi, 0x932d37a2
mov ebx, eax
add ebx, 0x932d37a2
and ebx, esi
or ebx, edx
sub ebx, ecx
add ebx, 0x201de9d5
mov ecx, ebx
shl ecx, 1
and ecx, 2
xor ebx, 1
add ebx, ecx
mov byte [esp + eax + 0x4c], bl
add eax, 1
jmp 0x412de6
lea eax, [esp + 0x4c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00404950
cmp eax, 0
mov ebx, dword [esp + 0x2c]
je 0x412fd6
mov al, byte [esp + 0x124]
mov byte [esp + 0x168], al
mov byte [esp + 0x33c], 0xa8
mov byte [esp + 0x33d], 0xc7
mov eax, 2
mov byte [esp + eax + 0x33c], 0
add eax, 1
cmp eax, 8
jne 0x412e82
xor eax, eax
cmp eax, 8
jae 0x412ec9
movzx edx, byte [esp + eax + 0x33c]
mov ecx, eax
add ecx, 0x3e4cfa51
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0xd4
xor ecx, 0x6a
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x33c], cl
add eax, 1
jmp 0x412e94
lea eax, [esp + 0x33c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00404950
cmp eax, 0
je 0x412fd6
mov al, byte [esp + 0x120]
mov byte [esp + 0x16c], al
mov byte [esp + 0x260], 0xda
mov byte [esp + 0x261], 0xca
mov byte [esp + 0x262], 0x7e
mov eax, 3
mov byte [esp + eax + 0x260], 0
add eax, 1
cmp eax, 5
jne 0x412f1c
xor eax, eax
cmp eax, 5
jae 0x412fa1
movzx edx, byte [esp + eax + 0x260]
mov edi, eax
add edi, 0x7f83c695
mov ecx, 0x807c396a
sub ecx, eax
and ecx, 0x8d55d47f
mov esi, edi
and esi, 0x72aa2b80
or ecx, esi
xor ecx, edx
xor ecx, 0x8d55d47f
mov esi, eax
add esi, 0x95
and esi, edx
or ecx, esi
mov esi, eax
add esi, 0x95
or esi, edi
mov edi, dword [esp + 0x28]
and esi, edx
add ecx, 0xc3eb54c8
sub ecx, esi
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, 0x4e
add ecx, edx
mov byte [esp + eax + 0x260], cl
add eax, 1
jmp 0x412f2e
lea eax, [esp + 0x260]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00404950
cmp eax, 0
setne al
and al, 0xff
or al, 0
xor al, 0xff
test al, 1
jne 0x415703
jmp 0x412fdd
jmp 0x412fd8
jmp 0x415703
mov al, byte [esp + 0x11c]
mov byte [esp + 0x170], al
mov byte [esp + 0x334], 0xf4
mov byte [esp + 0x335], 0x5b
mov eax, 2
mov byte [esp + eax + 0x334], 0
add eax, 1
cmp eax, 5
jne 0x413000
xor eax, eax
cmp eax, 5
jae 0x413075
movzx ecx, byte [esp + eax + 0x334]
mov edx, eax
and edx, 0xc0edf5ef
mov esi, eax
and esi, 0x3f120a10
xor esi, 0x3f120a10
mov edi, eax
and edi, 0x3f120a10
xor edi, 0x3f120a10
or edi, esi
mov esi, edi
sub esi, edx
mov ebx, edi
sub ebx, edx
or esi, ebx
mov ebx, edi
sub ebx, edx
and esi, ebx
xor esi, 0xffffffff
mov ebx, ecx
and ebx, esi
xor ecx, 0xffffffff
sub edi, edx
and edi, ecx
or ebx, edi
mov cl, 0x54
sub cl, bl
mov byte [esp + eax + 0x334], cl
add eax, 1
jmp 0x413012
lea eax, [esp + 0x334]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046d0
mov ebx, eax
mov al, byte [esp + 0x118]
mov byte [esp + 0x174], al
mov byte [esp + 0x48], 0x7d
mov byte [esp + 0x49], 0xc9
mov eax, 2
mov byte [esp + eax + 0x48], 0
add eax, 1
cmp eax, 4
jne 0x4130ab
xor eax, eax
cmp eax, 4
jae 0x413101
movzx edx, byte [esp + eax + 0x48]
mov ecx, 0x51
sub ecx, eax
and ecx, edx
mov esi, 0x51
sub esi, eax
mov edi, 0x51
sub edi, eax
and esi, edi
or esi, edx
xor esi, 0xffffffff
or ecx, esi
add cl, 0x9a
mov byte [esp + eax + 0x48], cl
mov ecx, eax
and ecx, 1
mov edx, eax
and edx, 1
xor edx, 0xffffffff
add eax, 2
add eax, edx
add eax, ecx
jmp 0x4130ba
lea eax, [esp + 0x48]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004047a0
mov edi, eax
mov al, byte [esp + 0x114]
mov byte [esp + 0x178], al
mov byte [esp + 0x32c], 0xb6
mov byte [esp + 0x32d], 0x4f
mov eax, 2
mov byte [esp + eax + 0x32c], 0
add eax, 1
cmp eax, 7
jne 0x41313a
xor eax, eax
cmp eax, 7
jae 0x41316e
mov cl, byte [esp + eax + 0x32c]
mov dl, al
add dl, 0x8d
xor dl, cl
add dl, 0x3f
mov byte [esp + eax + 0x32c], dl
add eax, 1
jmp 0x41314c
lea eax, [esp + 0x32c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046d0
mov cl, byte [esp + 0x110]
mov byte [esp + 0x17c], cl
mov byte [esp + 0x324], 0xc0
mov byte [esp + 0x325], 0x6b
mov ecx, 2
mov byte [esp + ecx + 0x324], 0
add ecx, 1
cmp ecx, 7
jne 0x4131a8
mov dword [esp + 0x398], eax
xor eax, eax
cmp eax, 7
jae 0x41320f
movzx edx, byte [esp + eax + 0x324]
mov esi, eax
add esi, 0x40ee5c97
mov ecx, 0x3f11a368
sub ecx, eax
and ecx, 0x2235c6d6
and esi, 0xddca3929
or ecx, esi
xor ecx, edx
mov edx, ecx
and edx, 1
and ecx, 0xfe
xor ecx, 0xd7
add ecx, 0xc
add edx, ecx
mov byte [esp + eax + 0x324], dl
add eax, 1
jmp 0x4131c1
lea eax, [esp + 0x324]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00404730
fnstcw word [esp + 0x60]
movzx eax, word [esp + 0x60]
or eax, 0xc00
mov word [esp + 0x21c], ax
fldcw word [esp + 0x21c]
fistp dword [esp + 0x3b4]
fldcw word [esp + 0x60]
mov eax, dword [esp + 0x3b4]
mov dword [esp + 0x39c], eax
mov al, byte [esp + 0x10c]
mov byte [esp + 0x180], al
mov byte [esp + 0x258], 0xfe
mov byte [esp + 0x259], 0xee
mov byte [esp + 0x25a], 0x5a
mov eax, 3
mov byte [esp + eax + 0x258], 0
add eax, 1
cmp eax, 6
jne 0x413287
xor eax, eax
cmp eax, 6
jae 0x4132f7
movzx edx, byte [esp + eax + 0x258]
mov ecx, eax
add ecx, 0x5161e4ef
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
sub ecx, esi
mov esi, ecx
xor esi, 0x16e978ab
mov edx, ecx
or edx, 0x69168754
and edx, esi
shl edx, 1
mov esi, ecx
shl esi, 1
and esi, 0xd22d0ea8
add esi, 0x96e978ac
sub ecx, esi
mov esi, ecx
and esi, edx
shl esi, 1
xor ecx, edx
add ecx, esi
add cl, 1
mov byte [esp + eax + 0x258], cl
add eax, 1
jmp 0x413299
lea eax, [esp + 0x258]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00404730
fnstcw word [esp + 0x5e]
movzx eax, word [esp + 0x5e]
or eax, 0xc00
mov word [esp + 0x21a], ax
fldcw word [esp + 0x21a]
fistp dword [esp + 0x3b0]
fldcw word [esp + 0x5e]
mov eax, dword [esp + 0x3b0]
mov dword [esp + 0x394], eax
mov al, byte [esp + 0x108]
mov byte [esp + 0x184], al
mov byte [esp + 0x38], 0x7e
mov byte [esp + 0x39], 0x67
mov byte [esp + 0x3a], 0xda
mov eax, 3
mov byte [esp + eax + 0x38], 0
add eax, 1
cmp eax, 4
jne 0x413366
xor eax, eax
cmp eax, 4
jae 0x41339d
movzx edx, byte [esp + eax + 0x38]
mov ecx, eax
add ecx, 0xa539672f
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
sub ecx, esi
add cl, 0x15
mov byte [esp + eax + 0x38], cl
add eax, 1
jmp 0x413375
mov dword [esp + 0x6c], edi
lea eax, [esp + 0x38]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00404800
cmp eax, 0
setg byte [esp + 0x33]
mov esi, ebx
mov dword [esp], ebx
call fcn.00417800
mov ebx, eax
mov dword [esp + 0x26c], ebx
sub ebx, 0xffffffff
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4133eb
mov ecx, eax
mov dword [esp], ecx
call fcn.0040c860
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], ebx
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040ecd0
xor eax, eax
lea eax, [esp + 0x104]
mov dword [esp], 0
mov dword [esp + 4], edi
mov ecx, dword [esp + 0x26c]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x44ae00]
sub esp, 0x18
mov eax, dword [esp + 0x104]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
mov esi, dword [esp + 0x398]
jne 0x41346f
mov ecx, eax
mov dword [esp], ecx
call fcn.0040c860
mov ebx, dword [0x44ae00]
mov ecx, dword [esp + 0x104]
xor edx, edx
mov dword [esp], 0
mov dword [esp + 4], edi
mov edx, dword [esp + 0x26c]
mov dword [esp + 8], edx
mov dword [esp + 0x280], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
lea eax, [esp + 0x104]
mov dword [esp + 0x14], eax
call ebx
sub esp, 0x18
mov dword [esp], edi
call fcn.0040c870
jmp 0x4134c5
jmp 0x4134c7
mov dword [esp], esi
call fcn.00417800
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4134ec
mov ecx, eax
mov dword [esp], ecx
call fcn.0040c860
xor ecx, ecx
mov dword [esp + 0x274], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040ecd0
lea ecx, [esp + 0x580]
mov dword [esp], 1
call fcn.0040d080
sub esp, 4
xor ebx, ebx
mov edi, dword [esp + 0x6c]
mov esi, dword [esp + 0x280]
mov dword [esp], edi
call fcn.004049b0
cmp ebx, eax
jb 0x413551
mov edi, dword [esp + 0x28]
mov ebx, dword [esp + 0x2c]
jmp 0x413647
mov dword [esp], edi
mov dword [esp + 4], ebx
call fcn.00404990
mov dword [esp], eax
call fcn.00404710
mov edi, eax
cmp edi, 0
jne 0x413575
mov edi, dword [esp + 0x6c]
jmp 0x413636
mov dword [esp], edi
call fcn.00417800
add eax, 1
mov ecx, 2
mov dword [esp + 0x360], eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41359d
mov ecx, eax
mov dword [esp], ecx
call fcn.0040c860
mov esi, eax
xor eax, eax
mov dword [esp], esi
mov eax, dword [esp + 0x360]
mov dword [esp + 4], eax
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ecd0
mov eax, dword [esp + 0x39c]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x394]
mov dword [esp + 0x10], eax
mov dword [esp + 0x368], esi
mov dword [esp + 0xc], esi
mov esi, dword [esp + 0x280]
mov dword [esp + 8], esi
mov eax, dword [esp + 0x274]
mov dword [esp + 4], eax
lea eax, [esp + 0x580]
mov dword [esp], eax
xor eax, eax
mov cl, byte [esp + 0x33]
mov al, cl
and eax, 1
mov dword [esp + 0x18], eax
call fcn.004201e0
mov edi, dword [esp + 0x6c]
jmp 0x413623
jmp 0x413625
mov eax, dword [esp + 0x368]
mov dword [esp], eax
call fcn.0040c870
jmp 0x413636
mov eax, ebx
and eax, 1
shl eax, 1
xor ebx, 1
add ebx, eax
jmp 0x413538
mov eax, dword [esp + 0x274]
mov dword [esp], eax
call fcn.0040c870
jmp 0x413658
mov dword [esp], esi
call fcn.0040c870
jmp 0x413662
lea ecx, [esp + 0x580]
call fcn.0040da80
lea ecx, [esp + 0x580]
call fcn.0040d130
jmp 0x415703
mov al, byte [esp + 0x100]
mov byte [esp + 0x188], al
mov byte [esp + 0x31c], 0xc5
mov byte [esp + 0x31d], 0x3f
mov eax, 2
mov byte [esp + eax + 0x31c], 0
add eax, 1
cmp eax, 8
jne 0x4136a2
mov dword [esp + 0x2c], ebx
xor eax, eax
cmp eax, 8
jae 0x413711
movzx ecx, byte [esp + eax + 0x31c]
mov edx, eax
add edx, 0x22a2b975
mov esi, 0x8a
sub esi, eax
mov edi, 0x8a
sub edi, eax
and esi, edi
mov edi, edx
or edi, ecx
mov ebx, ecx
xor ebx, 0xffffffff
or esi, ebx
and esi, edi
xor esi, 0xffffffff
mov edi, edx
and edi, esi
shl edi, 1
sub edi, edx
mov edx, edi
xor edx, ecx
xor edi, 0xffffffff
and ecx, edi
shl ecx, 1
sub ecx, edx
add cl, 0xb7
mov byte [esp + eax + 0x31c], cl
add eax, 1
jmp 0x4136b8
lea eax, [esp + 0x31c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00404950
cmp eax, 0
setne al
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
test al, 1
jne 0x413747
jmp 0x413aa6
mov al, byte [esp + 0xfc]
mov byte [esp + 0x18c], al
mov byte [esp + 0x314], 0xf4
mov byte [esp + 0x315], 0x67
mov eax, 2
mov byte [esp + eax + 0x314], 0
add eax, 1
cmp eax, 7
jne 0x41376a
xor eax, eax
cmp eax, 7
jae 0x4137b9
movzx edx, byte [esp + eax + 0x314]
mov ecx, eax
add ecx, 0x99
mov esi, 0x66
sub esi, eax
mov edi, 0x66
sub edi, eax
and esi, edi
or ecx, edx
xor edx, 0xffffffff
or esi, edx
and ecx, esi
add cl, 3
mov byte [esp + eax + 0x314], cl
add eax, 1
jmp 0x41377c
lea eax, [esp + 0x314]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00404950
cmp eax, 0
mov edi, dword [esp + 0x28]
je 0x413aa6
mov al, byte [esp + 0xf8]
mov byte [esp + 0x190], al
mov byte [esp + 0x30c], 0xbd
mov byte [esp + 0x30d], 0x21
mov eax, 2
mov byte [esp + eax + 0x30c], 0
add eax, 1
cmp eax, 8
jne 0x413808
xor eax, eax
cmp eax, 8
jae 0x41383c
mov cl, byte [esp + eax + 0x30c]
mov dl, al
add dl, 0xf8
xor dl, cl
add dl, 0x28
mov byte [esp + eax + 0x30c], dl
add eax, 1
jmp 0x41381a
lea eax, [esp + 0x30c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 5
call fcn.00404950
cmp eax, 0
je 0x413aa6
mov al, byte [esp + 0xf4]
mov byte [esp + 0x194], al
mov byte [esp + 0x304], 0x16
mov byte [esp + 0x305], 0x9f
mov eax, 2
mov byte [esp + eax + 0x304], 0
add eax, 1
cmp eax, 7
jne 0x413887
xor eax, eax
cmp eax, 7
jae 0x413905
movzx esi, byte [esp + eax + 0x304]
mov edx, 0xa873d79a
sub edx, eax
or edx, esi
mov ecx, 0x9a
sub ecx, eax
mov edi, 0x9a
sub edi, eax
or ecx, edi
and ecx, esi
xor edx, 0xffffffff
or ecx, edx
mov edx, ecx
add edx, 0xb9d6e66e
mov esi, edx
shl esi, 1
and esi, 0x94866c0c
xor edx, 0x4a433606
add edx, esi
mov esi, edx
shl esi, 1
and esi, 0x24
xor edx, 0x92
add edx, esi
shl ecx, 1
and ecx, 2
xor edx, 1
add edx, ecx
mov byte [esp + eax + 0x304], dl
add eax, 1
jmp 0x413899
lea eax, [esp + 0x304]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00404950
cmp eax, 0
mov edi, dword [esp + 0x28]
je 0x413aa6
mov al, byte [esp + 0xf0]
mov byte [esp + 0x198], al
mov byte [esp + 0x2fc], 0xa4
mov byte [esp + 0x2fd], 0x41
mov eax, 2
mov byte [esp + eax + 0x2fc], 0
add eax, 1
cmp eax, 5
jne 0x413954
xor eax, eax
cmp eax, 5
jae 0x4139bc
mov dl, byte [esp + eax + 0x2fc]
mov ecx, eax
add ecx, 0x10
or ecx, 0x6b
sub ecx, eax
add ecx, 0xf0
mov esi, 0xef
sub esi, eax
and esi, 0x94
xor esi, 0x94
or ecx, esi
xor cl, dl
xor cl, 0x94
mov dl, 0xaf
sub dl, cl
mov byte [esp + eax + 0x2fc], dl
add eax, 0xd7454786
mov ecx, eax
shl ecx, 1
and ecx, 0x16
xor eax, 0x28bab87b
add eax, ecx
jmp 0x413966
jmp 0x4139be
lea eax, [esp + 0x2fc]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00404950
cmp eax, 0
je 0x413aa6
mov al, byte [esp + 0xec]
mov byte [esp + 0x19c], al
mov byte [esp + 0x250], 0x4e
mov byte [esp + 0x251], 0x7e
mov byte [esp + 0x252], 0xea
mov eax, 3
mov byte [esp + eax + 0x250], 0
add eax, 1
cmp eax, 6
jne 0x413a11
xor eax, eax
cmp eax, 6
jae 0x413a6b
movzx esi, byte [esp + eax + 0x250]
mov edx, 0x8993df28
sub edx, eax
or edx, esi
mov ecx, 0x28
sub ecx, eax
mov edi, 0x28
sub edi, eax
or ecx, edi
and ecx, esi
xor edx, 0xffffffff
or ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x1a
xor ecx, 0xd
add ecx, edx
add cl, 0xc0
mov byte [esp + eax + 0x250], cl
add eax, 1
jmp 0x413a23
lea eax, [esp + 0x250]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00404950
cmp eax, 0
setne al
xor al, 0xff
and al, 1
or al, 0
xor al, 0
test al, 1
mov edi, dword [esp + 0x28]
jne 0x415703
jmp 0x413aab
jmp 0x415703
mov al, byte [esp + 0xe8]
mov byte [esp + 0x1a0], al
mov byte [esp + 0x2f4], 0xbd
mov byte [esp + 0x2f5], 0x27
mov eax, 2
mov byte [esp + eax + 0x2f4], 0
add eax, 1
cmp eax, 5
jne 0x413ace
xor eax, eax
jmp 0x413ae2
cmp eax, 5
jae 0x413b3f
movzx ecx, byte [esp + eax + 0x2f4]
mov edx, eax
add edx, 0x79
and edx, ecx
mov esi, edx
and esi, 2
xor esi, 2
mov edi, edx
and edi, 0xfd
imul edi, esi
mov esi, edx
and esi, 2
or edx, 2
imul edx, esi
add edx, edi
add edx, 0x87
add ecx, eax
sub ecx, edx
add cl, 0xa3
mov byte [esp + eax + 0x2f4], cl
mov ecx, eax
shl ecx, 1
and ecx, 6
xor eax, 0xa5357e43
add eax, ecx
add eax, 0x5aca81be
jmp 0x413ae2
lea eax, [esp + 0x2f4]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046d0
mov dword [esp + 0x294], eax
mov al, byte [esp + 0xe4]
mov byte [esp + 0x1a4], al
mov byte [esp + 0x2ec], 0x14
mov byte [esp + 0x2ed], 0xbb
mov eax, 2
mov byte [esp + eax + 0x2ec], 0
add eax, 1
cmp eax, 8
jne 0x413b80
xor eax, eax
jmp 0x413b94
cmp eax, 8
jae 0x413bce
mov dl, byte [esp + eax + 0x2ec]
mov esi, eax
add esi, 0x9f
mov ecx, 0x20
sub ecx, eax
and ecx, 0x39
and esi, 0xc6
or ecx, esi
xor cl, dl
xor cl, 0x39
add cl, 0xe5
mov byte [esp + eax + 0x2ec], cl
add eax, 1
jmp 0x413b94
lea eax, [esp + 0x2ec]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046d0
mov cl, byte [esp + 0xe0]
mov byte [esp + 0x1a8], cl
mov byte [esp + 0x2e4], 0x13
mov byte [esp + 0x2e5], 0xe7
mov ecx, 2
mov byte [esp + ecx + 0x2e4], 0
add ecx, 1
cmp ecx, 8
jne 0x413c08
mov dword [esp + 0x3a8], eax
xor eax, eax
jmp 0x413c23
cmp eax, 8
jae 0x413c7e
movzx esi, byte [esp + eax + 0x2e4]
mov edx, eax
add edx, 0x12a5afa9
mov ecx, 0x56
sub ecx, eax
mov edi, 0x56
sub edi, eax
and ecx, edi
or edx, esi
xor esi, 0xffffffff
or ecx, esi
and ecx, edx
mov edx, ecx
shl edx, 1
and edx, 2
mov esi, ecx
shl esi, 1
and esi, 2
add ecx, 0xb3
sub ecx, esi
add ecx, edx
mov byte [esp + eax + 0x2e4], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x413c23
lea eax, [esp + 0x2e4]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004047a0
mov cl, byte [esp + 0xdc]
mov byte [esp + 0x1ac], cl
mov byte [esp + 0x2dc], 0xae
mov byte [esp + 0x2dd], 0x27
mov ecx, 2
mov byte [esp + ecx + 0x2dc], 0
add ecx, 1
cmp ecx, 6
jne 0x413cb8
mov dword [esp + 0x2a0], eax
xor eax, eax
cmp eax, 6
jae 0x413da8
movzx ecx, byte [esp + eax + 0x2dc]
mov edx, eax
add edx, 1
mov edi, eax
xor edi, 0xffffffff
or edi, 0x6b078e89
add edi, edx
mov edx, edi
and edx, 2
xor edx, 2
mov esi, edi
and esi, 0xfffffffd
imul esi, edx
mov edx, edi
and edx, 2
or edi, 2
imul edi, edx
add edi, esi
mov edx, eax
xor edx, 0x6b078e89
add edx, edi
mov esi, edx
add esi, 1
mov ebx, edx
xor ebx, 0xffffffff
mov edi, ecx
or edi, ebx
add edi, esi
mov esi, edi
and esi, 2
xor esi, 2
mov ebx, edi
and ebx, 0xfffffffd
imul ebx, esi
mov esi, edi
and esi, 2
or edi, 2
imul edi, esi
add edi, ebx
sub edi, edx
mov edx, edi
xor edx, ecx
xor edi, 0xffffffff
and ecx, edi
shl ecx, 1
sub ecx, edx
mov edx, ecx
and edx, 0x50
mov esi, ecx
and esi, 2
xor esi, 2
mov edi, ecx
and edi, 0x50
imul edi, esi
mov esi, ecx
and esi, 2
or edx, 2
imul edx, esi
add edx, edi
mov esi, ecx
shl esi, 1
and esi, 0xa4
add esi, 0xae
sub ecx, esi
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x2dc], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x413cd1
jmp 0x413daa
lea eax, [esp + 0x2dc]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046d0
mov cl, byte [esp + 0xd8]
mov byte [esp + 0x1b0], cl
mov byte [esp + 0x44], 0xb0
mov byte [esp + 0x45], 0x1b
mov ecx, 2
mov byte [esp + ecx + 0x44], 0
add ecx, 1
cmp ecx, 4
jne 0x413dde
mov dword [esp + 0x3a4], eax
xor eax, eax
cmp eax, 4
jae 0x413e27
movzx edx, byte [esp + eax + 0x44]
mov ecx, eax
add ecx, 0x296c01fb
xor ecx, edx
mov edx, ecx
xor edx, 0x67
mov esi, ecx
or esi, 0x18
and esi, edx
shl esi, 1
xor ecx, 0x18
add ecx, esi
add cl, 1
mov byte [esp + eax + 0x44], cl
add eax, 1
jmp 0x413df4
lea eax, [esp + 0x44]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00404730
fnstcw word [esp + 0x5c]
movzx eax, word [esp + 0x5c]
or eax, 0xc00
mov word [esp + 0x218], ax
fldcw word [esp + 0x218]
fistp dword [esp + 0x3bc]
fldcw word [esp + 0x5c]
mov eax, dword [esp + 0x3bc]
mov dword [esp + 0x3ac], eax
mov al, byte [esp + 0xd4]
mov byte [esp + 0x1b4], al
mov byte [esp + 0x248], 0xc2
mov byte [esp + 0x249], 0xb6
mov byte [esp + 0x24a], 0x36
mov eax, 3
mov byte [esp + eax + 0x248], 0
add eax, 1
cmp eax, 8
jne 0x413e9c
xor eax, eax
cmp eax, 8
jae 0x413f1d
mov cl, byte [esp + eax + 0x248]
movzx edx, cl
mov esi, eax
and esi, 0x90f8dcf4
mov ebx, eax
and ebx, 0x90f8dcf4
mov edi, eax
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, eax
and ebx, 2
or esi, 2
imul esi, ebx
add esi, edi
mov ebx, eax
xor ebx, 0x90f8dcf6
add ebx, esi
mov esi, ebx
and esi, edx
shl esi, 1
mov edi, ebx
sub edi, esi
add edi, edx
mov edx, edi
shl edx, 1
xor edx, 0xffffffff
add edi, edx
mov edx, ebx
and edx, edi
shl edx, 1
sub ebx, edx
add bl, cl
add bl, 0x32
mov byte [esp + eax + 0x248], bl
add eax, 1
jmp 0x413eae
lea eax, [esp + 0x248]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00404730
fnstcw word [esp + 0x5a]
movzx eax, word [esp + 0x5a]
or eax, 0xc00
mov word [esp + 0x216], ax
fldcw word [esp + 0x216]
fistp dword [esp + 0x3b8]
fldcw word [esp + 0x5a]
mov esi, dword [esp + 0x3b8]
mov eax, dword [esp + 0x294]
mov dword [esp], eax
call fcn.00417800
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x413f8f
mov ecx, eax
mov dword [esp], ecx
call fcn.0040c860
mov ebx, eax
xor eax, eax
mov dword [esp], ebx
mov dword [esp + 4], edi
mov eax, dword [esp + 0x294]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ecd0
lea ecx, [esp + 0x3c4]
mov dword [esp], ebx
call fcn.00417870
sub esp, 4
mov dword [esp], ebx
call fcn.0040c870
mov edi, dword [esp + 0x28]
lea ecx, [esp + 0x3c4]
mov dword [esp], 0x400
call fcn.00438d80
sub esp, 4
cmp eax, 0
mov ebx, dword [esp + 0x2c]
jge 0x413ffc
jmp 0x4146d4
mov dword [esp + 0xd0], 0
mov eax, dword [esp + 0x3c4]
mov dword [esp + 0x378], eax
mov al, byte [esp + 0x1b8]
mov byte [esp + 0x214], al
mov byte [esp + 0x1bc], 0xc5
mov byte [esp + 0x1bd], 0xc6
mov byte [esp + 0x1be], 0xc7
mov byte [esp + 0x1bf], 0xc0
mov eax, 4
mov byte [esp + eax + 0x1bc], 0
add eax, 1
cmp eax, 7
jne 0x414048
mov dword [esp + 0x3a0], esi
xor eax, eax
cmp eax, 7
jae 0x4140b6
movzx edx, byte [esp + eax + 0x1bc]
mov ecx, eax
add ecx, 0x31
and ecx, edx
mov esi, 0x272c72ce
sub esi, eax
xor edx, 0xffffffff
and esi, edx
or ecx, esi
mov esi, ecx
xor esi, 0xffffffff
shl esi, 1
and esi, 0x14
xor ecx, 0x3c21c1f5
mov edx, ecx
add edx, esi
shl ecx, 1
and ecx, 2
xor edx, 1
add edx, ecx
mov byte [esp + eax + 0x1bc], dl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x414061
mov edi, dword [esp + 0x1bc]
xor esi, esi
mov ecx, 2
cmp esi, dword [0x44ae04]
jb 0x4140d1
jmp 0x41415a
mov edx, dword [0x44ae08]
cmp dword [edx + esi*8], 0xae6e2b0b
sete bl
xor ecx, ecx
mov byte [esp + 0x31], bl
test bl, 1
jne 0x4140ee
jmp 0x414149
mov edx, dword [edx + esi*8 + 4]
mov ecx, 2
cmp edx, edi
je 0x414149
mov eax, dword [0x44ae0c]
xor ecx, ecx
lea ecx, [esp + 0xd0]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 5
mov eax, dword [esp + 0x378]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], ecx
call fcn.0043bd80
mov ecx, 1
test byte [esp + 0x31], 1
je 0x414152
jmp 0x41415a
add esi, 1
jmp 0x4140bf
cmp ecx, 2
je 0x414161
mov edi, eax
mov al, byte [esp + 0xc4]
mov byte [esp + 0x1c4], al
mov byte [esp + 0xc8], 0x64
mov byte [esp + 0xc9], 0x61
mov byte [esp + 0xca], 0x62
mov byte [esp + 0xcb], 0x23
mov eax, 4
mov byte [esp + eax + 0xc8], 0
add eax, 1
cmp eax, 7
jne 0x414194
xor eax, eax
cmp eax, 7
jae 0x41421b
movzx edx, byte [esp + eax + 0xc8]
mov ecx, eax
add ecx, 0xd435d18
mov esi, ecx
and esi, edx
shl esi, 1
sub ecx, esi
add ecx, edx
mov edx, ecx
and edx, 0x85
mov esi, ecx
and esi, 2
xor esi, 2
mov ebx, ecx
and ebx, 0x85
imul esi, ebx
mov ebx, ecx
and ebx, 2
or edx, 2
imul edx, ebx
add edx, esi
mov esi, ecx
shl esi, 1
and esi, 0xe
add esi, 0x79
sub ecx, esi
add ecx, edx
add cl, 1
mov byte [esp + eax + 0xc8], cl
mov ecx, eax
and ecx, 1
or eax, 1
add eax, 0x39314d33
or eax, ecx
add eax, 0xc6ceb2cd
jmp 0x4141a6
mov eax, dword [esp + 0xc8]
cmp edi, eax
mov ebx, dword [esp + 0x2c]
jne 0x4146d0
mov eax, dword [esp + 0xd0]
add eax, 2
mov dword [esp], eax
call fcn.004389f0
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0xd0]
xor ecx, ecx
sub ecx, eax
add ecx, 0xfffffffe
xor edi, edi
sub edi, ecx
mov eax, dword [esp + 0x3c4]
mov dword [esp + 0x374], eax
mov al, byte [esp + 0x1c8]
mov byte [esp + 0x210], al
mov byte [esp + 0x1cc], 0xc5
mov byte [esp + 0x1cd], 0xc6
mov byte [esp + 0x1ce], 0xc7
mov byte [esp + 0x1cf], 0xc0
mov eax, 4
mov byte [esp + eax + 0x1cc], 0
add eax, 1
cmp eax, 7
jne 0x414297
xor eax, eax
cmp eax, 7
jae 0x4142fe
movzx edx, byte [esp + eax + 0x1cc]
mov ecx, eax
add ecx, 0x31
and ecx, edx
mov esi, 0x272c72ce
sub esi, eax
xor edx, 0xffffffff
and esi, edx
or ecx, esi
mov esi, ecx
xor esi, 0xffffffff
shl esi, 1
and esi, 0x14
xor ecx, 0x3c21c1f5
mov edx, ecx
add edx, esi
shl ecx, 1
and ecx, 2
xor edx, 1
add edx, ecx
mov byte [esp + eax + 0x1cc], dl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x4142a9
mov eax, dword [esp + 0x1cc]
mov dword [esp + 0x268], eax
xor esi, esi
mov ecx, 2
cmp esi, dword [0x44ae04]
jb 0x414320
jmp 0x4143a7
mov edx, dword [0x44ae08]
cmp dword [edx + esi*8], 0xae6e2b0b
sete bl
xor ecx, ecx
mov byte [esp + 0x30], bl
test bl, 1
jne 0x41433d
jmp 0x414396
mov edx, dword [edx + esi*8 + 4]
mov ecx, 2
cmp edx, dword [esp + 0x268]
je 0x414396
mov eax, dword [0x44ae0c]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 5
mov eax, dword [esp + 0x374]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov eax, dword [esp + 0x70]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], 0
call fcn.0043bd80
mov ecx, 1
test byte [esp + 0x30], 1
je 0x41439f
jmp 0x4143a7
add esi, 1
jmp 0x41430e
cmp ecx, 2
jne 0x4143b3
mov eax, dword [esp + 0x268]
cmp eax, 0
jl 0x4146c0
mov esi, dword [esp + 0x3a8]
mov dword [esp], esi
call fcn.00417800
mov ebx, eax
xor eax, eax
sub eax, ebx
add eax, 0xffffffff
xor edi, edi
sub edi, eax
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4143f0
mov ecx, eax
mov dword [esp], ecx
call fcn.0040c860
xor ecx, ecx
mov dword [esp + 0x370], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040ecd0
mov eax, dword [esp + 0x70]
mov esi, eax
add esi, 4
mov edi, dword [eax + 4]
movzx eax, word [eax]
shr eax, 1
shl eax, 1
add edi, eax
add edi, 0xfffffffe
mov eax, edi
cmp eax, dword [esi]
jb 0x414451
mov cx, word [eax]
cmp cx, 0
je 0x414451
movzx ecx, cx
cmp ecx, 0x5c
jne 0x41444c
mov edi, eax
jmp 0x414453
add eax, 0xfffffffe
jmp 0x414433
jmp 0x414453
mov eax, dword [esi]
xor ecx, ecx
sub ecx, eax
add edi, ecx
sar edi, 1
xor ecx, ecx
sub ecx, edi
xor eax, eax
sub eax, ebx
add ecx, eax
xor eax, eax
sub eax, ecx
sub eax, 0xffffffff
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x414484
mov ecx, eax
mov dword [esp], ecx
call fcn.0040c860
mov ebx, eax
mov eax, dword [esi]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], edi
call fcn.004178a0
mov dword [esp], eax
mov esi, dword [esp + 0x370]
mov dword [esp + 4], esi
call fcn.0040e120
mov edi, eax
mov dword [esp], esi
call fcn.0040c870
mov eax, edi
xor eax, 0xffffffff
and eax, ebx
mov ecx, ebx
xor ecx, 0xffffffff
and edi, ecx
sub edi, eax
sar edi, 1
mov eax, edi
and eax, 1
shl eax, 1
xor edi, 1
add edi, eax
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4144f3
mov ecx, eax
mov dword [esp], ecx
call fcn.0040c860
mov dword [esp], ebx
mov dword [esp + 0x27c], eax
mov dword [esp + 4], eax
call fcn.00436f90
mov dword [esp], ebx
call fcn.0040c870
mov esi, dword [esp + 0x3a4]
mov dword [esp], esi
call fcn.00417800
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x414542
mov ecx, eax
mov dword [esp], ecx
call fcn.0040c860
xor ecx, ecx
mov dword [esp + 0x270], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040ecd0
lea ecx, [esp + 0x4f8]
mov dword [esp], 1
call fcn.0040d080
sub esp, 4
xor ebx, ebx
mov esi, dword [esp + 0x2a0]
mov dword [esp], esi
call fcn.004049b0
cmp ebx, eax
jb 0x41459b
jmp 0x414684
mov dword [esp], esi
mov dword [esp + 4], ebx
call fcn.00404990
mov dword [esp], eax
call fcn.00404710
mov esi, eax
cmp esi, 0
jne 0x4145bb
jmp 0x414669
mov dword [esp], esi
call fcn.00417800
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4145e0
mov ecx, eax
mov dword [esp], ecx
call fcn.0040c860
mov dword [esp + 0x35c], eax
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040ecd0
lea eax, [esp + 0x4f8]
xor ecx, ecx
mov dword [esp], eax
mov eax, dword [esp + 0x270]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x27c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x35c]
mov esi, eax
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x3a0]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x3ac]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
call fcn.004201e0
jmp 0x41465d
mov dword [esp], esi
call fcn.0040c870
jmp 0x414667
jmp 0x414669
add ebx, 0xc73bc617
add ebx, 1
sub ebx, 0xc73bc617
mov esi, dword [esp + 0x2a0]
jmp 0x41458a
mov eax, dword [esp + 0x270]
mov dword [esp], eax
call fcn.0040c870
jmp 0x414695
jmp 0x414697
mov eax, dword [esp + 0x27c]
mov dword [esp], eax
call fcn.0040c870
jmp 0x4146a8
lea ecx, [esp + 0x4f8]
call fcn.0040da80
lea ecx, [esp + 0x4f8]
call fcn.0040d130
mov eax, dword [esp + 0x70]
mov dword [esp], eax
call fcn.00438a60
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
lea ecx, [esp + 0x3c4]
call fcn.00417960
jmp 0x415703
mov al, byte [esp + 0xc0]
mov byte [esp + 0x1d4], al
mov byte [esp + 0x2d4], 0xa0
mov byte [esp + 0x2d5], 0x31
mov eax, 2
mov byte [esp + eax + 0x2d4], 0
add eax, 1
cmp eax, 5
jne 0x414708
jmp 0x41471a
xor eax, eax
cmp eax, 5
jae 0x41475d
movzx edx, byte [esp + eax + 0x2d4]
mov esi, eax
shl esi, 1
and esi, 0x46762618
mov ecx, eax
xor ecx, 0xa33b130c
add ecx, esi
xor ecx, edx
mov edx, ecx
xor edx, 0x3d
shl ecx, 1
and ecx, 0x84
sub ecx, edx
add cl, 1
mov byte [esp + eax + 0x2d4], cl
add eax, 1
jmp 0x41471c
lea eax, [esp + 0x2d4]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046d0
mov esi, eax
mov al, byte [esp + 0xbc]
mov byte [esp + 0x1d8], al
mov byte [esp + 0x2cc], 0x1a
mov byte [esp + 0x2cd], 0x9b
mov eax, 2
mov byte [esp + eax + 0x2cc], 0
add eax, 1
cmp eax, 6
jne 0x414799
mov dword [esp + 0x2c], ebx
xor eax, eax
cmp eax, 6
jae 0x41485c
movzx ecx, byte [esp + eax + 0x2cc]
mov dword [esp + 0x364], ecx
mov edi, eax
add edi, 0x58591db
mov dword [esp + 0x37c], esi
mov esi, 0x6a7a6e24
sub esi, eax
mov edx, eax
add edx, 0x158591db
and edx, 0x14b414d3
and esi, 0xeb4beb2c
or edx, esi
xor edx, ecx
xor edx, 0xd3
mov esi, 0x24
sub esi, eax
and esi, ecx
or edx, esi
mov esi, 0x6a7a6e24
sub esi, eax
mov ebx, 0x6a7a6e24
sub ebx, eax
and ebx, 0xfb642ca0
and edi, 0x49bd35f
or ebx, edi
mov edi, ebx
xor edi, 0xa0
mov ecx, esi
and ecx, edi
xor ebx, esi
xor ebx, 0x5f
add ebx, esi
mov esi, dword [esp + 0x37c]
sub ebx, ecx
and ebx, dword [esp + 0x364]
xor edx, 0xffffffff
or ebx, edx
add bl, 0xb9
mov byte [esp + eax + 0x2cc], bl
add eax, 1
jmp 0x4147af
lea eax, [esp + 0x2cc]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046d0
mov ebx, eax
cmp esi, 0
sete al
test ebx, ebx
sete cl
or al, cl
test al, 1
jne 0x414888
jmp 0x414895
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
jmp 0x41519c
mov dword [esp], esi
call fcn.00417800
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4148ba
mov ecx, eax
mov dword [esp], ecx
call fcn.0040c860
xor ecx, ecx
mov dword [esp + 0x29c], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040ecd0
mov dword [esp], ebx
call fcn.00417800
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x414908
mov ecx, eax
mov dword [esp], ecx
call fcn.0040c860
xor ecx, ecx
mov dword [esp + 0x298], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040ecd0
mov al, byte [esp + 0xb8]
mov byte [esp + 0x1dc], al
mov byte [esp + 0x2c4], 0x1e
mov byte [esp + 0x2c5], 0xbb
mov eax, 2
mov byte [esp + eax + 0x2c4], 0
add eax, 1
cmp eax, 6
jne 0x414954
xor eax, eax
cmp eax, 6
jae 0x4149f5
movzx edx, byte [esp + eax + 0x2c4]
mov ecx, eax
add ecx, 0xed80421f
mov esi, 0x127fbde0
sub esi, eax
mov edi, 0x127fbde0
sub edi, eax
and esi, edi
xor esi, 0xffffffff
mov edi, edx
and edi, esi
mov ebx, edi
and ebx, 0xfd
mov esi, edi
and esi, 2
xor esi, 2
imul esi, ebx
mov ebx, edi
and ebx, 2
or edi, 2
imul edi, ebx
add edi, esi
add ecx, edx
add ecx, 0x53b84b9
sub ecx, edi
add ecx, 0x4f18b45d
mov edx, ecx
shl edx, 1
and edx, 0xc8
xor ecx, 0x64
add ecx, edx
add cl, 0xeb
mov byte [esp + eax + 0x2c4], cl
mov ecx, eax
xor ecx, 0xfffffffe
mov edx, eax
or edx, 1
and edx, ecx
or eax, 1
add eax, edx
jmp 0x414966
lea eax, [esp + 0x2c4]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046d0
mov ebx, eax
mov dword [esp + 0x68], 0
cmp ebx, 0
je 0x414a6d
mov dword [esp], ebx
call fcn.00417800
jmp 0x414a25
mov edi, eax
and edi, 1
or eax, 1
add edi, eax
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x414a47
mov ecx, eax
mov dword [esp], ecx
call fcn.0040c860
xor ecx, ecx
mov dword [esp + 0x68], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040ecd0
mov al, byte [esp + 0xb4]
mov byte [esp + 0x1e0], al
mov byte [esp + 0x2bc], 2
mov byte [esp + 0x2bd], 0x9f
mov eax, 2
mov byte [esp + eax + 0x2bc], 0
add eax, 1
cmp eax, 6
jne 0x414a90
xor eax, eax
cmp eax, 6
jae 0x414acd
mov cl, byte [esp + eax + 0x2bc]
mov dl, al
add dl, 0xe5
xor dl, cl
add dl, 0x87
mov byte [esp + eax + 0x2bc], dl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x414aa2
lea eax, [esp + 0x2bc]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046d0
mov ebx, eax
mov dword [esp + 0x64], 0
cmp ebx, 0
je 0x414b4d
mov dword [esp], ebx
call fcn.00417800
mov edi, eax
mov eax, edi
and eax, 1
shl eax, 1
xor edi, 1
add edi, eax
mov ecx, 2
mov eax, edi
mul ecx
seto cl
jmp 0x414b17
jmp 0x414b19
mov edx, 0xffffffff
test cl, 1
jne 0x414b25
mov edx, eax
mov dword [esp], edx
call fcn.0040c860
xor ecx, ecx
mov dword [esp + 0x64], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040ecd0
jmp 0x414b4d
mov al, byte [esp + 0xb0]
mov byte [esp + 0x1e4], al
mov byte [esp + 0x2b4], 8
mov byte [esp + 0x2b5], 0xeb
mov eax, 2
mov byte [esp + eax + 0x2b4], 0
add eax, 1
cmp eax, 5
jne 0x414b70
xor eax, eax
mov ebx, dword [esp + 0x2c]
cmp eax, 5
jae 0x414bc4
movzx edx, byte [esp + eax + 0x2b4]
mov ecx, eax
add ecx, 0x1754627
xor ecx, edx
mov edx, ecx
and edx, 0x3c
mov esi, ecx
and esi, 0xc3
mov edi, ecx
xor edi, 0x3c
add ecx, edi
sub ecx, esi
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x2b4], cl
add eax, 1
jmp 0x414b86
lea eax, [esp + 0x2b4]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046d0
mov edi, eax
mov dword [esp + 0x74], 0
cmp edi, 0
je 0x414c3f
mov dword [esp], edi
call fcn.00417800
xor ecx, ecx
sub ecx, eax
add ecx, 0xffffffff
xor ebx, ebx
sub ebx, ecx
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x414c15
mov ecx, eax
mov dword [esp], ecx
call fcn.0040c860
xor ecx, ecx
mov dword [esp + 0x74], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ecd0
mov ebx, dword [esp + 0x2c]
mov al, byte [esp + 0xac]
mov byte [esp + 0x1e8], al
mov byte [esp + 0x240], 0x6b
mov byte [esp + 0x241], 0x17
mov byte [esp + 0x242], 0x8e
mov eax, 3
mov byte [esp + eax + 0x240], 0
add eax, 1
cmp eax, 5
jne 0x414c6a
xor eax, eax
mov edi, dword [esp + 0x28]
cmp eax, 5
jae 0x414cb7
mov dl, byte [esp + eax + 0x240]
mov esi, eax
add esi, 0x5d
mov ecx, 2
sub ecx, eax
and ecx, 0xb
and esi, 0xf4
or ecx, esi
xor cl, dl
xor cl, 0xb
add cl, 0x2f
mov byte [esp + eax + 0x240], cl
add eax, 1
jmp 0x414c80
lea eax, [esp + 0x240]
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004047a0
mov dword [esp + 0x3c], 0
cmp eax, 0
mov esi, 0
je 0x415065
mov dword [esp + 0x288], eax
mov dword [esp], eax
call fcn.004049b0
mov ecx, 0xc
mov dword [esp + 0x3c], eax
mul ecx
seto dl
add eax, 4
setb cl
or dl, cl
mov ecx, 0xffffffff
test dl, 1
jne 0x414d14
mov ecx, eax
mov dword [esp], ecx
call fcn.0040c860
mov esi, eax
mov eax, dword [esp + 0x3c]
mov dword [esi], eax
add esi, 4
cmp eax, 0
mov dword [esp + 0x40], esi
je 0x414d5a
imul eax, dword [esp + 0x3c], 0xc
mov ebx, esi
mov esi, ebx
add esi, eax
mov ecx, ebx
call fcn.00417970
add ebx, 0xc
cmp ebx, esi
sete al
test al, 1
jne 0x414d50
jmp 0x414d3b
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x40]
jmp 0x414d5a
xor ecx, ecx
mov eax, dword [esp + 0x288]
jmp 0x414d65
cmp ecx, dword [esp + 0x3c]
jb 0x414d70
jmp 0x415065
mov dword [esp], eax
mov dword [esp + 0x390], ecx
mov dword [esp + 4], ecx
call fcn.004049c0
mov ebx, eax
mov al, byte [esp + 0xa8]
mov byte [esp + 0x1ec], al
mov byte [esp + 0x238], 0xeb
mov byte [esp + 0x239], 0xf1
mov byte [esp + 0x23a], 6
mov eax, 3
mov byte [esp + eax + 0x238], 0
add eax, 1
cmp eax, 6
jne 0x414db0
xor eax, eax
cmp eax, 6
jae 0x414df6
movzx ecx, byte [esp + eax + 0x238]
mov edx, eax
add edx, 0xf0ebec41
xor edx, ecx
mov ecx, edx
and ecx, 1
mov esi, 0x45
sub esi, edx
or esi, 1
sub ecx, esi
mov byte [esp + eax + 0x238], cl
add eax, 1
jmp 0x414dc2
lea eax, [esp + 0x238]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.004046d0
mov dword [esp + 0x388], eax
mov al, byte [esp + 0xa4]
mov byte [esp + 0x1f0], al
mov byte [esp + 0x230], 0x6b
mov byte [esp + 0x231], 0x75
mov byte [esp + 0x232], 0xce
mov eax, 3
mov byte [esp + eax + 0x230], 0
add eax, 1
cmp eax, 5
jne 0x414e3b
xor eax, eax
mov esi, dword [esp + 0x40]
cmp eax, 5
jae 0x414e98
movzx edx, byte [esp + eax + 0x230]
mov ecx, eax
add ecx, 0xad
mov esi, 0x52
sub esi, eax
mov edi, 0x52
sub edi, eax
or esi, edi
xor esi, 0xffffffff
mov edi, ebx
mov ebx, edx
or ebx, esi
mov esi, dword [esp + 0x40]
and ecx, edx
sub ebx, ecx
add bl, 0x9f
mov byte [esp + eax + 0x230], bl
mov ebx, edi
add eax, 1
jmp 0x414e51
lea eax, [esp + 0x230]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.004046d0
mov dword [esp + 0x380], eax
mov al, byte [esp + 0x98]
mov byte [esp + 0x1f4], al
mov byte [esp + 0x9c], 0x18
mov byte [esp + 0x9d], 0x5f
mov byte [esp + 0x9e], 0x5c
mov byte [esp + 0x9f], 0xb9
mov eax, 4
mov byte [esp + eax + 0x9c], 0
add eax, 1
cmp eax, 5
jne 0x414ee5
xor eax, eax
mov edi, dword [esp + 0x28]
cmp eax, 5
jae 0x414f42
movzx edx, byte [esp + eax + 0x9c]
mov ecx, eax
add ecx, 0x47eedbdf
mov esi, 0x20
sub esi, eax
and esi, edx
xor edx, 0xffffffff
and ecx, edx
or ecx, esi
mov esi, dword [esp + 0x40]
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, 0xa4
add ecx, edx
mov byte [esp + eax + 0x9c], cl
add eax, 1
jmp 0x414efb
lea eax, [esp + 0x9c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00404800
cmp eax, 0
setg byte [esp + 0x32]
mov al, byte [esp + 0x8c]
mov byte [esp + 0x1f8], al
mov byte [esp + 0x90], 9
mov byte [esp + 0x91], 0x38
mov byte [esp + 0x92], 0xb
mov byte [esp + 0x93], 0x91
mov eax, 4
mov byte [esp + eax + 0x90], 0
add eax, 1
cmp eax, 5
jne 0x414f90
xor eax, eax
cmp eax, 5
jae 0x414ff4
movzx edx, byte [esp + eax + 0x90]
mov ecx, eax
add ecx, 0xf880e8a5
or ecx, edx
mov esi, eax
add esi, 0xa5
and esi, edx
add ecx, 0xe7dc9c26
sub ecx, esi
mov esi, dword [esp + 0x40]
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, 0xa0
add edx, ecx
mov byte [esp + eax + 0x90], dl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x414fa2
lea eax, [esp + 0x90]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00404800
xor edx, edx
cmp eax, 0
setg dl
mov ebx, dword [esp + 0x390]
imul eax, ebx, 0xc
mov ecx, esi
add ecx, eax
mov eax, dword [esp + 0x388]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x380]
mov dword [esp], eax
and edx, 1
mov dword [esp + 0xc], edx
xor eax, eax
mov dl, byte [esp + 0x32]
mov al, dl
and eax, 1
mov dword [esp + 8], eax
call fcn.00417990
sub esp, 0x10
mov ecx, ebx
add ecx, 1
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x288]
jmp 0x414d65
mov eax, dword [esp + 0x298]
mov dword [esp + 0x3d4], eax
mov eax, dword [esp + 0x29c]
mov dword [esp + 0x3d8], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x3dc], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x3e0], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x3e4], eax
lea ecx, [esp + 0x470]
mov dword [esp], 2
call fcn.0040d080
sub esp, 4
lea eax, [esp + 0x470]
lea ecx, [esp + 0x3d4]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], esi
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xc], eax
call fcn.00417fb0
lea ecx, [esp + 0x470]
call fcn.0040da80
cmp esi, 0
sete al
test al, 1
jne 0x41512b
jmp 0x4150f6
mov edi, esi
add edi, 0xfffffffc
imul eax, dword [esi - 4], 0xc
mov ebx, esi
add ebx, eax
cmp esi, ebx
je 0x415119
jmp 0x415109
add ebx, 0xfffffff4
mov ecx, ebx
call fcn.00417b00
cmp ebx, esi
jne 0x415109
jmp 0x415119
mov dword [esp], edi
call fcn.0040c870
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
jmp 0x41512b
jmp 0x41512d
mov eax, dword [esp + 0x298]
mov dword [esp], eax
call fcn.0040c870
jmp 0x41513e
jmp 0x415140
mov eax, dword [esp + 0x29c]
mov dword [esp], eax
call fcn.0040c870
mov eax, dword [esp + 0x64]
jmp 0x415155
cmp dword [esp + 0x68], 0
je 0x41516e
mov eax, dword [esp + 0x68]
mov dword [esp], eax
call fcn.0040c870
mov eax, dword [esp + 0x64]
jmp 0x41516e
cmp eax, 0
je 0x41517b
mov dword [esp], eax
call fcn.0040c870
mov eax, dword [esp + 0x74]
cmp eax, 0
je 0x41518e
mov dword [esp], eax
call fcn.0040c870
jmp 0x41518e
lea ecx, [esp + 0x470]
call fcn.0040d130
jmp 0x41519c
jmp 0x415703
mov al, byte [esp + 0x88]
mov byte [esp + 0x1fc], al
mov byte [esp + 0x2ac], 0x6c
mov byte [esp + 0x2ad], 0xfb
mov eax, 2
mov byte [esp + eax + 0x2ac], 0
add eax, 1
cmp eax, 6
jne 0x4151c4
xor eax, eax
cmp eax, 6
jae 0x415219
movzx edx, byte [esp + eax + 0x2ac]
mov ecx, eax
add ecx, 0x578cde2b
mov esi, ecx
and esi, edx
shl esi, 1
sub ecx, esi
add ecx, edx
add ecx, 0x4a3fa928
mov edx, ecx
xor edx, 2
shl ecx, 1
and ecx, 0xfa
sub ecx, edx
add cl, 3
mov byte [esp + eax + 0x2ac], cl
add eax, 1
jmp 0x4151d6
lea eax, [esp + 0x2ac]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046d0
mov esi, eax
mov al, byte [esp + 0x84]
mov byte [esp + 0x200], al
mov byte [esp + 0x2a4], 0x76
mov byte [esp + 0x2a5], 0xff
mov eax, 2
mov byte [esp + eax + 0x2a4], 0
add eax, 1
cmp eax, 5
jne 0x415255
xor eax, eax
cmp eax, 5
jae 0x4152b8
movzx edx, byte [esp + eax + 0x2a4]
mov edi, esi
mov esi, eax
shl esi, 1
and esi, 0xf84562aa
mov ecx, eax
xor ecx, 0xfc22b155
add ecx, esi
mov esi, edi
xor ecx, edx
mov edx, ecx
xor edx, 0xecad76aa
shl ecx, 1
and ecx, 0x26a512aa
sub ecx, edx
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0x2a4], cl
add eax, 1
jmp 0x415267
lea eax, [esp + 0x2a4]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004046d0
mov edi, eax
test esi, esi
sete al
test edi, edi
sete cl
or al, cl
test al, 1
jne 0x4152e3
jmp 0x4152ec
mov edi, dword [esp + 0x28]
jmp 0x415701
mov dword [esp + 0x2c], ebx
mov dword [esp], esi
call fcn.00417800
xor ecx, ecx
sub ecx, eax
add ecx, 0xffffffff
xor ebx, ebx
sub ebx, ecx
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41531b
mov ecx, eax
mov dword [esp], ecx
call fcn.0040c860
xor ecx, ecx
mov dword [esp + 0x290], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040ecd0
mov dword [esp], edi
call fcn.00417800
mov ebx, eax
mov eax, ebx
and eax, 1
shl eax, 1
xor ebx, 1
add ebx, eax
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x415372
mov ecx, eax
mov dword [esp], ecx
call fcn.0040c860
xor ecx, ecx
mov dword [esp + 0x28c], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ecd0
mov al, byte [esp + 0x80]
mov byte [esp + 0x204], al
mov byte [esp + 0x228], 0xb3
mov byte [esp + 0x229], 0xaf
mov byte [esp + 0x22a], 0x26
mov eax, 3
mov byte [esp + eax + 0x228], 0
add eax, 1
cmp eax, 8
jne 0x4153c6
xor eax, eax
mov edi, dword [esp + 0x28]
cmp eax, 8
jae 0x4153fe
mov cl, byte [esp + eax + 0x228]
mov dl, al
add dl, 0x39
xor dl, cl
add dl, 0xe3
mov byte [esp + eax + 0x228], dl
add eax, 1
jmp 0x4153dc
lea eax, [esp + 0x228]
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004047a0
xor ebx, ebx
cmp eax, 0
mov esi, 0
je 0x415648
mov dword [esp + 0x38c], eax
mov dword [esp], eax
call fcn.004049b0
mov ebx, eax
mov ecx, 8
mov eax, ebx
mul ecx
seto dl
add eax, 4
setb cl
or dl, cl
mov ecx, 0xffffffff
test dl, 1
jne 0x415455
mov ecx, eax
mov dword [esp], ecx
call fcn.0040c860
mov dword [eax], ebx
add eax, 4
cmp ebx, 0
mov dword [esp + 0x284], eax
je 0x41548d
mov ecx, ebx
shl ecx, 3
mov esi, eax
add esi, ecx
mov edi, eax
mov ecx, edi
call fcn.00417b30
add edi, 8
cmp edi, esi
jne 0x415479
mov edi, dword [esp + 0x28]
jmp 0x41548d
xor esi, esi
jmp 0x415491
cmp esi, ebx
setb al
test al, 1
jne 0x4154aa
jmp 0x41549c
mov esi, ebx
mov ebx, dword [esp + 0x284]
jmp 0x415648
mov eax, dword [esp + 0x38c]
mov dword [esp], eax
mov dword [esp + 0x384], esi
mov dword [esp + 4], esi
call fcn.004049c0
mov dword [esp + 0x278], eax
mov al, byte [esp + 0x7c]
mov byte [esp + 0x208], al
mov byte [esp + 0x34], 0xcf
mov byte [esp + 0x35], 0xf9
mov byte [esp + 0x36], 0x6a
mov eax, 3
mov byte [esp + eax + 0x34], 0
add eax, 1
cmp eax, 4
jne 0x4154ea
xor esi, esi
cmp esi, 4
jae 0x415538
mov cl, byte [esp + esi + 0x34]
mov edx, esi
and edx, 0x15
mov eax, esi
and eax, 2
xor eax, 2
mov edi, esi
and edi, 0x15
imul edi, eax
mov eax, esi
and eax, 2
or edx, 2
imul edx, eax
add edx, edi
mov eax, esi
xor eax, 0x17
add eax, edx
xor al, cl
add al, 0x8d
mov byte [esp + esi + 0x34], al
add esi, 1
jmp 0x4154f9
lea eax, [esp + 0x34]
mov ecx, dword [esp + 0x278]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046d0
mov dword [esp + 0x36c], eax
mov al, byte [esp + 0x78]
mov byte [esp + 0x20c], al
mov byte [esp + 0x220], 0x6b
mov byte [esp + 0x221], 0x7d
mov byte [esp + 0x222], 6
mov eax, 3
mov byte [esp + eax + 0x220], 0
add eax, 1
cmp eax, 7
jne 0x41557e
xor eax, eax
mov edi, dword [esp + 0x28]
cmp eax, 7
jae 0x4155fb
movzx esi, byte [esp + eax + 0x220]
mov edx, 0x2fd77d7e
sub edx, eax
or edx, esi
mov ecx, 0x7e
sub ecx, eax
mov edi, 0x7e
sub edi, eax
or ecx, edi
and ecx, esi
xor edx, 0xffffffff
or ecx, edx
mov edx, ecx
and edx, 0x78
mov edi, ecx
and edi, 0x78
mov esi, ecx
and esi, 2
xor esi, 2
imul esi, edi
mov edi, ecx
and edi, 2
or edx, 2
imul edx, edi
mov edi, dword [esp + 0x28]
add edx, esi
xor ecx, 0x7a
add ecx, 1
add ecx, edx
mov byte [esp + eax + 0x220], cl
add eax, 1
jmp 0x415594
lea eax, [esp + 0x220]
mov ecx, dword [esp + 0x278]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046d0
mov esi, dword [esp + 0x384]
mov edx, esi
shl edx, 3
mov ecx, dword [esp + 0x284]
add ecx, edx
mov dword [esp], eax
mov eax, dword [esp + 0x36c]
mov dword [esp + 4], eax
call fcn.00417b40
sub esp, 8
add esi, 1
jmp 0x415491
lea ecx, [esp + 0x3e8]
mov dword [esp], 3
call fcn.0040d080
sub esp, 4
lea eax, [esp + 0x3e8]
mov dword [esp], eax
mov eax, dword [esp + 0x290]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x28c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], esi
call fcn.0041e400
lea ecx, [esp + 0x3e8]
call fcn.0040da80
cmp ebx, 0
mov esi, ebx
je 0x4156cf
mov edi, esi
add edi, 0xfffffffc
mov eax, dword [esi - 4]
shl eax, 3
mov ebx, esi
add ebx, eax
cmp esi, ebx
je 0x4156c3
jmp 0x4156b3
add ebx, 0xfffffff8
mov ecx, ebx
call fcn.00417c00
cmp ebx, esi
jne 0x4156b3
jmp 0x4156c3
mov dword [esp], edi
call fcn.0040c870
mov edi, dword [esp + 0x28]
jmp 0x4156d1
mov eax, dword [esp + 0x290]
mov dword [esp], eax
call fcn.0040c870
mov ebx, dword [esp + 0x2c]
jmp 0x4156e6
mov eax, dword [esp + 0x28c]
mov dword [esp], eax
call fcn.0040c870
lea ecx, [esp + 0x3e8]
call fcn.0040d130
jmp 0x415703
jmp 0x415705
mov eax, edi
and eax, 1
or edi, 1
add edi, eax
jmp 0x412a0e
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret