Function at 0x413458
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x628
mov ebx, dword [ebp + 8]
mov al, byte [esp + 0x138]
mov byte [esp + 0x13c], al
mov byte [esp + 0x36c], 0x23
mov byte [esp + 0x36d], 0x81
mov eax, 2
mov byte [esp + eax + 0x36c], 0
add eax, 1
cmp eax, 5
jne 0x412765
xor eax, eax
cmp eax, 5
jae 0x4127d0
movzx edx, byte [esp + eax + 0x36c]
mov esi, eax
add esi, 0xe9079660
mov ecx, 0x16f8699f
sub ecx, eax
and ecx, 0x3a306553
and esi, 0xc5cf9aac
or ecx, esi
xor ecx, edx
xor ecx, 0x53
mov esi, eax
add esi, 0x60
and esi, edx
or ecx, esi
mov esi, eax
add esi, 0x61
mov edi, 0x9f
sub edi, eax
or edi, edx
add edi, esi
sub ecx, edi
add cl, 0x20
mov byte [esp + eax + 0x36c], cl
add eax, 1
jmp 0x412777
lea eax, [esp + 0x36c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00404920
mov esi, eax
cmp esi, 0
jne 0x4127f1
xor eax, eax
jmp 0x415424
xor edi, edi
jmp 0x4127f5
mov dword [esp], esi
call fcn.00404e70
cmp edi, eax
jb 0x412808
mov al, 1
jmp 0x415424
mov dword [esp], esi
mov dword [esp + 4], edi
call fcn.00404e80
mov dword [esp + 0x24], eax
mov al, byte [esp + 0x134]
mov byte [esp + 0x140], al
mov byte [esp + 0x364], 0x40
mov byte [esp + 0x365], 0xcb
mov eax, 2
mov byte [esp + eax + 0x364], 0
add eax, 1
cmp eax, 8
jne 0x41283b
mov dword [esp + 0x28], edi
xor eax, eax
cmp eax, 8
jae 0x412887
movzx edx, byte [esp + eax + 0x364]
mov ecx, eax
add ecx, 0xb3
mov edi, edx
xor edi, 0xffffffff
and ecx, edi
mov edi, 0x4c
sub edi, eax
and edi, edx
or ecx, edi
add cl, 0x81
mov byte [esp + eax + 0x364], cl
add eax, 1
jmp 0x412851
lea eax, [esp + 0x364]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00404d50
cmp eax, 0
setne al
mov cl, al
xor cl, 0xff
xor al, 0xff
or cl, al
xor cl, 0xff
or cl, 0
xor cl, 0xff
or cl, 0
test cl, 1
mov edi, dword [esp + 0x28]
jne 0x4128cc
jmp 0x4128d1
jmp 0x41541c
mov al, byte [esp + 0x130]
mov byte [esp + 0x144], al
mov byte [esp + 0x35c], 0x74
mov byte [esp + 0x35d], 0xf9
mov eax, 2
mov byte [esp + eax + 0x35c], 0
add eax, 1
cmp eax, 8
jne 0x4128f4
xor eax, eax
cmp eax, 8
jae 0x41293f
mov dl, byte [esp + eax + 0x35c]
mov edi, eax
add edi, 0x3b9b98d6
mov ecx, edi
shl ecx, 1
sub ecx, eax
add ecx, 0x2a
and ecx, 0x46
and edi, 0xb9
or ecx, edi
xor cl, dl
add cl, 0xd2
mov byte [esp + eax + 0x35c], cl
add eax, 1
jmp 0x412906
mov edi, dword [esp + 0x28]
jmp 0x412945
mov dword [esp + 0x3c4], esi
lea eax, [esp + 0x35c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004047f0
fnstcw word [esp + 0x52]
movzx eax, word [esp + 0x52]
or eax, 0xc00
mov word [esp + 0x20e], ax
fldcw word [esp + 0x20e]
fistp dword [esp + 0x3d8]
fldcw word [esp + 0x52]
mov eax, dword [esp + 0x3d8]
mov ecx, eax
sub ecx, 3
ja 0x415413
mov eax, dword [eax*4 + 0x4436fc]
jmp eax
mov al, byte [esp + 0x12c]
mov byte [esp + 0x148], al
mov byte [esp + 0x354], 0x68
mov byte [esp + 0x355], 0xf9
mov eax, 2
mov byte [esp + eax + 0x354], 0
add eax, 1
cmp eax, 5
jne 0x4129c9
xor eax, eax
cmp eax, 5
jae 0x412a32
movzx ecx, byte [esp + eax + 0x354]
mov edx, eax
add edx, 0x2a
and edx, ecx
mov edi, edx
and edi, 2
xor edi, 2
mov ebx, edx
and ebx, 0xfd
imul ebx, edi
mov edi, edx
and edi, 2
or edx, 2
imul edx, edi
add edx, ebx
add edx, 0xea735dd5
add ecx, eax
sub ecx, edx
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, 0x2c
add ecx, edx
mov byte [esp + eax + 0x354], cl
add eax, 1
jmp 0x4129db
lea eax, [esp + 0x354]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00404d50
cmp eax, 0
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0x28]
je 0x412dde
mov al, byte [esp + 0x120]
mov byte [esp + 0x14c], al
mov byte [esp + 0x124], 0xe5
mov byte [esp + 0x125], 0x99
mov byte [esp + 0x126], 0x96
mov byte [esp + 0x127], 0x97
mov eax, 4
mov byte [esp + eax + 0x124], 0
add eax, 1
cmp eax, 5
jne 0x412a94
xor eax, eax
cmp eax, 5
jae 0x412ac8
mov cl, byte [esp + eax + 0x124]
mov dl, al
add dl, 0xa6
xor dl, cl
add dl, 0xc2
mov byte [esp + eax + 0x124], dl
add eax, 1
jmp 0x412aa6
mov esi, dword [esp + 0x124]
mov cl, byte [esp + 0x11c]
mov byte [esp + 0x150], cl
mov byte [esp + 0x34c], 0xe5
mov byte [esp + 0x34d], 0x91
mov ecx, 2
mov byte [esp + ecx + 0x34c], 0
add ecx, 1
cmp ecx, 8
jne 0x412af2
xor ecx, ecx
cmp ecx, 8
jae 0x412b8f
movzx edi, byte [esp + ecx + 0x34c]
mov ebx, ecx
add ebx, 1
mov edx, ecx
xor edx, 0xffffffff
or edx, 0x48cfaa1c
add ebx, edx
shl ebx, 1
mov edx, ecx
xor edx, 0x48cfaa1c
add edx, ebx
mov eax, edx
and eax, edi
mov ebx, eax
xor ebx, 0xffffffff
shl ebx, 1
add ebx, eax
or edx, edi
add ebx, 1
and edx, ebx
mov eax, edx
add eax, 0x93f1ad73
mov edi, eax
and edi, 1
mov ebx, 0x6c0e528c
sub ebx, edx
mov edx, ebx
and edx, 0xc8
and eax, 0x37
or edx, eax
xor edx, 0xc9
and ebx, 1
xor ebx, 1
or edx, ebx
add edx, edi
mov byte [esp + ecx + 0x34c], dl
mov eax, ecx
shl eax, 1
and eax, 2
xor ecx, 1
add ecx, eax
jmp 0x412b04
lea eax, [esp + 0x34c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], esi
call fcn.00404d50
cmp eax, 0
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0x28]
je 0x412dde
mov al, byte [esp + 0x118]
mov byte [esp + 0x154], al
mov byte [esp + 0x344], 0xfa
mov byte [esp + 0x345], 0x71
mov eax, 2
mov byte [esp + eax + 0x344], 0
add eax, 1
cmp eax, 5
jne 0x412bdd
xor eax, eax
cmp eax, 5
jae 0x412c1a
mov cl, byte [esp + eax + 0x344]
mov dl, al
add dl, 0xec
xor dl, cl
add dl, 0x64
mov byte [esp + eax + 0x344], dl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x412bef
lea eax, [esp + 0x344]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00404d50
cmp eax, 0
setne al
test al, 1
jne 0x412c48
jmp 0x412dde
mov al, byte [esp + 0x114]
mov byte [esp + 0x158], al
mov byte [esp + 0x33c], pe_nt_image_headers32
mov byte [esp + 0x33d], 0x1f
mov eax, 2
mov byte [esp + eax + 0x33c], 0
add eax, 1
cmp eax, 6
jne 0x412c6b
xor eax, eax
cmp eax, 6
jae 0x412ce9
movzx edi, byte [esp + eax + 0x33c]
mov edx, 0x43210afa
sub edx, eax
or edx, edi
mov ecx, 0xfa
sub ecx, eax
mov ebx, 0xfa
sub ebx, eax
or ecx, ebx
and ecx, edi
xor edx, 0xffffffff
or ecx, edx
mov edx, ecx
and edx, 0xe4
mov ebx, ecx
and ebx, 0xe4
mov edi, ecx
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, ecx
and ebx, 2
or edx, 2
imul edx, ebx
add edx, edi
xor ecx, 0xe6
add ecx, 1
add ecx, edx
mov byte [esp + eax + 0x33c], cl
add eax, 1
jmp 0x412c7d
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.00404d50
cmp eax, 0
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0x28]
je 0x412dde
mov al, byte [esp + 0x110]
mov byte [esp + 0x15c], al
mov byte [esp + 0x260], 0x3e
mov byte [esp + 0x261], 2
mov byte [esp + 0x262], 0x92
mov eax, 3
mov byte [esp + eax + 0x260], 0
add eax, 1
cmp eax, 6
jne 0x412d43
xor edi, edi
cmp edi, 6
jae 0x412d9c
mov cl, byte [esp + edi + 0x260]
movzx esi, cl
mov ebx, edi
shl ebx, 1
and ebx, 0x976ed348
mov eax, edi
shl eax, 1
and eax, 0x976ed348
mov edx, edi
add edx, 0xcbb769a4
sub edx, eax
add edx, ebx
mov eax, edx
and eax, esi
shl eax, 1
sub edx, eax
add dl, cl
add dl, 0xcc
mov byte [esp + edi + 0x260], dl
add edi, 1
jmp 0x412d55
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.00404d50
cmp eax, 0
setne al
or al, al
xor al, 0xff
xor al, 0xff
and al, 1
or al, 0
xor al, 0xff
test al, 1
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0x28]
jne 0x415413
jmp 0x412de3
jmp 0x415413
mov al, byte [esp + 0x10c]
mov byte [esp + 0x160], al
mov byte [esp + 0x334], 0xe0
mov byte [esp + 0x335], 0x71
mov eax, 2
mov byte [esp + eax + 0x334], 0
add eax, 1
cmp eax, 6
jne 0x412e06
xor eax, eax
cmp eax, 6
jae 0x412e3a
mov cl, byte [esp + eax + 0x334]
mov dl, al
add dl, 0xec
xor dl, cl
add dl, 0x64
mov byte [esp + eax + 0x334], dl
add eax, 1
jmp 0x412e18
lea eax, [esp + 0x334]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046c0
mov dword [esp + 0x28c], eax
mov al, byte [esp + 0x108]
mov byte [esp + 0x164], al
mov byte [esp + 0x32c], 0x17
mov byte [esp + 0x32d], 0xeb
mov eax, 2
mov byte [esp + eax + 0x32c], 0
add eax, 1
cmp eax, 6
jne 0x412e7b
xor eax, eax
cmp eax, 6
jae 0x412eaf
mov cl, byte [esp + eax + 0x32c]
mov dl, al
add dl, 0x27
xor dl, cl
add dl, 0x3d
mov byte [esp + eax + 0x32c], dl
add eax, 1
jmp 0x412e8d
lea eax, [esp + 0x32c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00404920
mov dword [esp + 0x5c], eax
mov al, byte [esp + 0x104]
mov byte [esp + 0x168], al
mov byte [esp + 0x324], 0x8a
mov byte [esp + 0x325], 0x11
mov eax, 2
mov byte [esp + eax + 0x324], 0
add eax, 1
cmp eax, 8
jne 0x412eed
xor eax, eax
cmp eax, 8
jae 0x412f32
movzx edx, byte [esp + eax + 0x324]
mov ecx, eax
add ecx, 4
mov edi, edx
xor edi, 0xffffffff
and ecx, edi
mov edi, 0xfb
sub edi, eax
and edi, edx
or ecx, edi
add cl, 0xec
mov byte [esp + eax + 0x324], cl
add eax, 1
jmp 0x412eff
lea eax, [esp + 0x324]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046c0
mov dword [esp + 0x288], eax
mov al, byte [esp + 0x100]
mov byte [esp + 0x16c], al
mov byte [esp + 0x31c], 0x2c
mov byte [esp + 0x31d], 0x89
mov eax, 2
mov byte [esp + eax + 0x31c], 0
add eax, 1
cmp eax, 7
jne 0x412f73
xor eax, eax
cmp eax, 7
jae 0x412fe8
mov cl, byte [esp + eax + 0x31c]
mov byte [esp + 0x2c], cl
movzx ebx, cl
mov edi, eax
add edi, 0x158c5e22
mov edx, edi
and edx, ebx
mov ebx, edx
and ebx, 2
xor ebx, 2
mov ecx, edx
and ecx, 0xfd
imul ecx, ebx
mov ebx, edx
and ebx, 2
or edx, 2
imul edx, ebx
add edx, ecx
mov ebx, edx
xor ebx, edi
mov ecx, 0x6a73a1dd
sub ecx, eax
and edx, ecx
shl edx, 1
sub ebx, edx
add bl, byte [esp + 0x2c]
add bl, 0x56
mov byte [esp + eax + 0x31c], bl
add eax, 1
jmp 0x412f85
lea eax, [esp + 0x31c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004047f0
fnstcw word [esp + 0x50]
movzx eax, word [esp + 0x50]
or eax, 0xc00
mov word [esp + 0x20c], ax
fldcw word [esp + 0x20c]
fistp dword [esp + 0x3cc]
fldcw word [esp + 0x50]
mov eax, dword [esp + 0x3cc]
mov dword [esp + 0x3ac], eax
mov al, byte [esp + 0xfc]
mov byte [esp + 0x170], al
mov byte [esp + 0x258], 0x1e
mov byte [esp + 0x259], 0x2e
mov byte [esp + 0x25a], 0xba
mov eax, 3
mov byte [esp + eax + 0x258], 0
add eax, 1
cmp eax, 6
jne 0x413060
xor eax, eax
cmp eax, 6
jae 0x4130b6
movzx ecx, byte [esp + eax + 0x258]
mov edx, eax
add edx, 1
mov edi, eax
xor edi, 0xffffffff
or edi, 0x6649955f
add edi, edx
shl edi, 1
mov edx, eax
xor edx, 0x6649955f
add edx, edi
mov edi, edx
and edi, ecx
shl edi, 1
add edx, ecx
sub edx, edi
add dl, 0x25
mov byte [esp + eax + 0x258], dl
add eax, 1
jmp 0x413072
lea eax, [esp + 0x258]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004047f0
fnstcw word [esp + 0x4e]
movzx eax, word [esp + 0x4e]
or eax, 0xc00
mov word [esp + 0x20a], ax
fldcw word [esp + 0x20a]
fistp dword [esp + 0x3c8]
fldcw word [esp + 0x4e]
mov eax, dword [esp + 0x3c8]
mov dword [esp + 0x3a4], eax
mov al, byte [esp + 0xf8]
mov byte [esp + 0x174], al
mov byte [esp + 0x250], 2
mov byte [esp + 0x251], 0xd
mov byte [esp + 0x252], 0x96
mov eax, 3
mov byte [esp + eax + 0x250], 0
add eax, 1
cmp eax, 7
jne 0x41312e
xor eax, eax
cmp eax, 7
jae 0x41317f
movzx edi, byte [esp + eax + 0x250]
mov ecx, eax
add ecx, 0xa6
mov edx, 0x59
sub edx, eax
and edx, edi
xor ecx, edi
add ecx, edi
mov ebx, eax
add ebx, 0xa6
and ebx, edi
add edx, ebx
sub ecx, edx
add cl, 0xc2
mov byte [esp + eax + 0x250], cl
add eax, 1
jmp 0x413140
lea eax, [esp + 0x250]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00404a50
cmp eax, 0
setg byte [esp + 0x2f]
mov eax, dword [esp + 0x28c]
mov dword [esp], eax
call fcn.00417410
mov esi, eax
mov ebx, esi
sub ebx, 0xadd1dbf5
add ebx, 1
add ebx, 0xadd1dbf5
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4131d8
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x28c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ee90
xor eax, eax
lea eax, [esp + 0xf4]
mov dword [esp], 0
mov dword [esp + 4], edi
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x44c3b4]
sub esp, 0x18
mov eax, dword [esp + 0xf4]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x413255
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
mov ebx, dword [0x44c3b4]
mov ecx, dword [esp + 0xf4]
xor edx, edx
lea edx, [esp + 0xf4]
mov dword [esp], 0
mov dword [esp + 4], edi
mov dword [esp + 8], esi
mov dword [esp + 0x27c], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
call ebx
sub esp, 0x18
mov ebx, dword [ebp + 8]
jmp 0x41329f
mov dword [esp], edi
call fcn.0040cc50
jmp 0x4132a9
mov eax, dword [esp + 0x288]
mov dword [esp], eax
call fcn.00417410
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4132d5
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
xor ecx, ecx
mov dword [esp + 0x270], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov eax, dword [esp + 0x288]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ee90
lea ecx, [esp + 0x598]
mov dword [esp], 1
call fcn.0040d360
sub esp, 4
xor esi, esi
mov eax, dword [esp + 0x5c]
mov dword [esp], eax
mov edi, eax
call fcn.00404e70
cmp esi, eax
jb 0x413334
jmp 0x413415
mov dword [esp], edi
mov edi, esi
mov dword [esp + 4], esi
call fcn.00404e50
mov dword [esp], eax
call fcn.004047d0
mov esi, eax
cmp esi, 0
jne 0x41335a
mov eax, dword [esp + 0x5c]
jmp 0x41340b
mov dword [esp], esi
call fcn.00417410
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 0x413388
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], esi
mov esi, eax
mov dword [esp + 0xc], 0
call fcn.0040ee90
mov eax, dword [esp + 0x3ac]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x3a4]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], esi
mov eax, dword [esp + 0x27c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x270]
mov dword [esp + 4], eax
lea eax, [esp + 0x598]
mov dword [esp], eax
xor eax, eax
mov cl, byte [esp + 0x2f]
mov al, cl
and eax, 1
mov dword [esp + 0x18], eax
call fcn.00420510
mov dword [esp], esi
call fcn.0040cc50
mov ebx, dword [ebp + 8]
mov eax, dword [esp + 0x5c]
jmp 0x41340b
mov esi, edi
sub esi, 0xffffffff
jmp 0x413321
mov eax, dword [esp + 0x270]
mov dword [esp], eax
call fcn.0040cc50
mov edi, dword [esp + 0x28]
jmp 0x41342a
mov eax, dword [esp + 0x27c]
mov dword [esp], eax
call fcn.0040cc50
jmp 0x41343b
lea ecx, [esp + 0x598]
call fcn.0040de60
lea ecx, [esp + 0x598]
call fcn.0040d410
jmp 0x415413
mov al, byte [esp + 0xf0]
mov byte [esp + 0x178], al
mov byte [esp + 0x44], 0xb5
mov byte [esp + 0x45], 0x1b
mov eax, 2
mov byte [esp + eax + 0x44], 0
add eax, 1
cmp eax, 4
jne 0x413475
mov esi, ebx
xor eax, eax
cmp eax, 4
jae 0x4134f5
movzx edx, byte [esp + eax + 0x44]
mov ecx, eax
add ecx, 0xfb
mov edi, eax
add edi, 0xfb
or ecx, edi
and ecx, edx
mov edi, eax
add edi, 0x836048fb
mov ebx, eax
add ebx, 0x836048fb
and edi, ebx
or edi, edx
xor edi, 0xffffffff
or ecx, edi
mov edx, ecx
shl edx, 1
xor edx, 0xffffffff
add ecx, edx
mov edi, ecx
add edi, 0x19
mov edx, 0xe7
sub edx, ecx
or edx, 1
add edx, edi
mov edi, 0xe7
sub edi, ecx
mov ebx, 0xe7
sub ebx, ecx
or edi, ebx
or edi, 1
sub edx, edi
mov byte [esp + eax + 0x44], dl
add eax, 1
jmp 0x413486
lea eax, [esp + 0x44]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00404d50
cmp eax, 0
setne al
mov ebx, esi
mov edi, dword [esp + 0x28]
test al, 1
jne 0x413526
jmp 0x41385e
mov al, byte [esp + 0xec]
mov byte [esp + 0x17c], al
mov byte [esp + 0x314], 0x9c
mov byte [esp + 0x315], 0xf
mov eax, 2
mov byte [esp + eax + 0x314], 0
add eax, 1
cmp eax, 6
jne 0x413549
xor eax, eax
cmp eax, 6
jae 0x41357d
mov cl, byte [esp + eax + 0x314]
mov dl, al
add dl, 0x7d
xor dl, cl
add dl, 0x8f
mov byte [esp + eax + 0x314], dl
add eax, 1
jmp 0x41355b
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.00404d50
cmp eax, 0
je 0x41385e
mov al, byte [esp + 0xe8]
mov byte [esp + 0x180], al
mov byte [esp + 0x30c], 0x97
mov byte [esp + 0x30d], 0xfb
mov eax, 2
mov byte [esp + eax + 0x30c], 0
add eax, 1
cmp eax, 8
jne 0x4135c8
xor eax, eax
cmp eax, 8
jae 0x413643
movzx edx, byte [esp + eax + 0x30c]
mov ecx, eax
and ecx, 0x39b5f07d
mov edi, eax
and edi, 2
xor edi, 2
mov ebx, eax
and ebx, 0x39b5f07d
imul edi, ebx
mov ebx, eax
and ebx, 2
or ecx, 2
imul ecx, ebx
add ecx, edi
mov edi, eax
shl edi, 1
and edi, 0x736be0fe
add edi, 0xc64a0f81
mov ebx, eax
sub ebx, edi
add ecx, ebx
xor ecx, edx
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, 0x84
add ecx, edx
mov byte [esp + eax + 0x30c], cl
add eax, 1
jmp 0x4135da
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.00404d50
cmp eax, 0
mov ebx, esi
mov edi, dword [esp + 0x28]
je 0x41385e
mov al, byte [esp + 0xe4]
mov byte [esp + 0x184], al
mov byte [esp + 0x304], 0xde
mov byte [esp + 0x305], 0x47
mov eax, 2
mov byte [esp + eax + 0x304], 0
add eax, 1
cmp eax, 7
jne 0x413694
xor eax, eax
cmp eax, 7
jae 0x4136f5
movzx edx, byte [esp + eax + 0x304]
mov ecx, eax
add ecx, 0x1fff3971
xor ecx, edx
mov edi, ecx
and edi, 0x36
xor edi, 0x36
mov ebx, ecx
and ebx, 0xc9
mov edx, ecx
shl edx, 1
and edx, 2
xor ebx, 0xffffffff
add edi, ebx
and edi, 0xfe
and ecx, 1
or ecx, edi
xor ecx, 0xffffffff
add edx, ecx
mov byte [esp + eax + 0x304], dl
add eax, 1
jmp 0x4136a6
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.00404d50
cmp eax, 0
mov ebx, esi
mov edi, dword [esp + 0x28]
je 0x41385e
mov al, byte [esp + 0xe0]
mov byte [esp + 0x188], al
mov byte [esp + 0x40], 0xa0
mov byte [esp + 0x41], 0xdb
mov eax, 2
mov byte [esp + eax + 0x40], 0
add eax, 1
cmp eax, 4
jne 0x413740
jmp 0x41374f
xor eax, eax
jmp 0x413753
cmp eax, 4
jae 0x413793
movzx edi, byte [esp + eax + 0x40]
mov edx, 0xfab87eb0
sub edx, eax
or edx, edi
mov ecx, 0xb0
sub ecx, eax
and ecx, edi
mov edi, dword [esp + 0x28]
xor edx, 0xffffffff
or ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0xe8
xor ecx, 0x74
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x40], cl
add eax, 1
jmp 0x413753
lea eax, [esp + 0x40]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00404d50
cmp eax, 0
setne al
jmp 0x4137b7
test al, 1
jne 0x4137c0
jmp 0x41385e
mov al, byte [esp + 0xdc]
mov byte [esp + 0x18c], al
mov byte [esp + 0x248], 0x9e
mov byte [esp + 0x249], 0x6e
mov byte [esp + 0x24a], 0xfa
mov eax, 3
mov byte [esp + eax + 0x248], 0
add eax, 1
cmp eax, 8
jne 0x4137eb
xor eax, eax
cmp eax, 8
jae 0x413825
mov dl, byte [esp + eax + 0x248]
mov ecx, eax
shl ecx, 1
mov edi, eax
xor edi, 0xffffffff
add ecx, edi
xor cl, dl
add cl, 5
mov byte [esp + eax + 0x248], cl
add eax, 1
jmp 0x4137fd
lea eax, [esp + 0x248]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00404d50
cmp eax, 0
setne al
xor al, 0xff
and al, 1
or al, 0
test al, 1
mov edi, dword [esp + 0x28]
jne 0x415413
jmp 0x413863
jmp 0x415413
mov al, byte [esp + 0xd8]
mov byte [esp + 0x190], al
mov byte [esp + 0x3c], 0xa3
mov byte [esp + 0x3d], 9
mov eax, 2
mov byte [esp + eax + 0x3c], 0
add eax, 1
cmp eax, 4
jne 0x413880
xor eax, eax
cmp eax, 4
jae 0x4138cf
movzx edx, byte [esp + eax + 0x3c]
xor ecx, ecx
sub ecx, eax
mov edi, ecx
shl edi, 1
and edi, 0x78935704
xor ecx, 0xc3b6547d
sub ecx, edi
add ecx, 1
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0xb4
xor ecx, 0x5a
add ecx, edx
add cl, 0x30
mov byte [esp + eax + 0x3c], cl
add eax, 1
jmp 0x41388f
lea eax, [esp + 0x3c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046c0
mov dword [esp + 0x294], eax
mov al, byte [esp + 0xd4]
mov byte [esp + 0x194], al
mov byte [esp + 0x2fc], 0x14
mov byte [esp + 0x2fd], 0x6b
mov eax, 2
mov byte [esp + eax + 0x2fc], 0
add eax, 1
cmp eax, 7
jne 0x41390d
xor eax, eax
cmp eax, 7
jae 0x41397f
movzx edx, byte [esp + eax + 0x2fc]
mov ecx, 0xbe903318
sub ecx, eax
mov edi, 0xbe903318
sub edi, eax
and ecx, edi
or ecx, edx
mov edi, 0x18
sub edi, eax
mov ebx, 0x18
sub ebx, eax
or edi, ebx
mov ebx, edx
xor ebx, 0xffffffff
or edi, ebx
add edi, edx
mov edx, 0xfffffffe
sub edx, edi
and ecx, edx
mov edx, ecx
xor edx, 0xffffffff
and ecx, 0x7c
xor ecx, 0x7c
or edx, 0x7c
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x2fc], cl
add eax, 1
jmp 0x41391f
lea eax, [esp + 0x2fc]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046c0
mov edi, eax
mov al, byte [esp + 0xd0]
mov byte [esp + 0x198], al
mov byte [esp + 0x2f4], 0x97
mov byte [esp + 0x2f5], 0x2b
mov eax, 2
mov byte [esp + eax + 0x2f4], 0
add eax, 1
cmp eax, 6
jne 0x4139bb
xor eax, eax
cmp eax, 6
jae 0x413a02
movzx edx, byte [esp + eax + 0x2f4]
mov ecx, eax
add ecx, 0xb5e94187
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0xb8
xor ecx, 0x5c
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x2f4], cl
add eax, 1
jmp 0x4139cd
lea eax, [esp + 0x2f4]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00404920
mov cl, byte [esp + 0xcc]
mov byte [esp + 0x19c], cl
mov byte [esp + 0x2ec], 0x1e
mov byte [esp + 0x2ed], 0x99
mov ecx, 2
mov byte [esp + ecx + 0x2ec], 0
add ecx, 1
cmp ecx, 6
jne 0x413a3c
mov dword [esp + 0x3b4], edi
mov dword [esp + 0x3c0], eax
xor eax, eax
cmp eax, 6
jae 0x413acc
movzx edi, byte [esp + eax + 0x2ec]
mov edx, 0x3d7f22d9
sub edx, eax
or edx, edi
xor edx, 0xffffffff
mov ebx, 0xd9
sub ebx, eax
mov ecx, 0xd9
sub ecx, eax
or ecx, ebx
and ecx, edi
or ecx, edx
mov edx, ecx
add edx, 0x337bae41
mov edi, edx
xor edi, 0xfe
mov ebx, edx
or ebx, 1
and ebx, edi
and edx, 0xfe
xor edx, 0xfe
mov edi, 0xbe
sub edi, ecx
and edi, 0xfe
or edx, edi
xor edx, 0xffffffff
add ebx, edx
mov byte [esp + eax + 0x2ec], bl
add eax, 1
jmp 0x413a5c
lea eax, [esp + 0x2ec]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046c0
mov cl, byte [esp + 0xc8]
mov byte [esp + 0x1a0], cl
mov byte [esp + 0x2e4], 0x64
mov byte [esp + 0x2e5], 0x89
mov ecx, 2
mov byte [esp + ecx + 0x2e4], 0
add ecx, 1
cmp ecx, 5
jne 0x413b06
mov dword [esp + 0x3b8], eax
xor eax, eax
cmp eax, 5
jae 0x413b4d
movzx edx, byte [esp + eax + 0x2e4]
mov ecx, eax
add ecx, 0x625b89de
mov edi, ecx
and edi, edx
shl edi, 1
add ecx, edx
sub ecx, edi
add cl, 0xaa
mov byte [esp + eax + 0x2e4], cl
add eax, 1
jmp 0x413b1f
lea eax, [esp + 0x2e4]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004047f0
fnstcw word [esp + 0x4c]
movzx eax, word [esp + 0x4c]
or eax, 0xc00
mov word [esp + 0x208], ax
fldcw word [esp + 0x208]
fistp dword [esp + 0x3d4]
fldcw word [esp + 0x4c]
mov eax, dword [esp + 0x3d4]
mov dword [esp + 0x3bc], eax
mov al, byte [esp + 0xc4]
mov byte [esp + 0x1a4], al
mov byte [esp + 0x240], 0x3a
mov byte [esp + 0x241], 0xa
mov byte [esp + 0x242], 0x9e
mov eax, 3
mov byte [esp + eax + 0x240], 0
add eax, 1
cmp eax, 6
jne 0x413bc5
xor eax, eax
cmp eax, 6
jae 0x413c48
movzx edx, byte [esp + eax + 0x240]
mov dword [esp + 0x378], edx
mov ecx, eax
add ecx, 0x385eeba5
mov ebx, edx
add ebx, 1
xor edx, 0xffffffff
mov edi, ecx
or edi, edx
add edi, ebx
mov edx, edi
and edx, 0xfd
mov ebx, edi
and ebx, 2
xor ebx, 2
imul ebx, edx
mov edx, edi
and edx, 2
or edi, 2
imul edi, edx
add edi, ebx
add ecx, dword [esp + 0x378]
sub ecx, edi
add cl, 0xc7
mov byte [esp + eax + 0x240], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
mov edx, eax
and edx, ecx
or eax, ecx
xor eax, 1
add eax, edx
jmp 0x413bd7
lea eax, [esp + 0x240]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004047f0
fnstcw word [esp + 0x4a]
movzx eax, word [esp + 0x4a]
or eax, 0xc00
mov word [esp + 0x206], ax
fldcw word [esp + 0x206]
fistp dword [esp + 0x3d0]
fldcw word [esp + 0x4a]
mov eax, dword [esp + 0x3d0]
mov dword [esp + 0x3b0], eax
mov eax, dword [esp + 0x294]
mov dword [esp], eax
call fcn.00417410
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x413cc1
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
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.0040ee90
lea ecx, [esp + 0x3dc]
mov dword [esp], ebx
call fcn.00417470
sub esp, 4
mov dword [esp], ebx
call fcn.0040cc50
mov edi, dword [esp + 0x28]
lea ecx, [esp + 0x3dc]
mov dword [esp], 0x400
call fcn.0043a030
sub esp, 4
mov ebx, esi
cmp eax, 0
setge al
test al, 1
jne 0x413d33
jmp 0x413d2e
jmp 0x4143da
mov dword [esp + 0xc0], 0
mov eax, dword [esp + 0x3dc]
mov dword [esp + 0x38c], eax
mov al, byte [esp + 0x1a8]
mov byte [esp + 0x204], al
mov byte [esp + 0x1ac], 0x97
mov byte [esp + 0x1ad], 0x96
mov byte [esp + 0x1ae], 0x95
mov byte [esp + 0x1af], 0x94
mov eax, 4
mov byte [esp + eax + 0x1ac], 0
add eax, 1
cmp eax, 5
jne 0x413d7f
xor eax, eax
cmp eax, 5
jae 0x413dd2
movzx edx, byte [esp + eax + 0x1ac]
mov edi, eax
shl edi, 1
and edi, 0x29840848
mov ecx, eax
xor ecx, 0x94c20424
add ecx, edi
xor ecx, edx
add ecx, 0x1835eb4b
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0x1ac], cl
add eax, 1
jmp 0x413d91
mov edx, dword [esp + 0x1ac]
xor edi, edi
mov ecx, 2
cmp edi, dword [0x44c3b8]
jb 0x413ded
jmp 0x413e84
mov dword [esp + 0x30], edx
mov edx, dword [0x44c3bc]
cmp dword [edx + edi*8], 0xae6e2b0b
sete bl
xor ecx, ecx
mov byte [esp + 0x2d], bl
test bl, 1
jne 0x413e0e
jmp 0x413e6b
mov edx, dword [edx + edi*8 + 4]
mov ecx, 2
cmp edx, dword [esp + 0x30]
je 0x413e6b
mov eax, dword [0x44c3c0]
xor ecx, ecx
lea ecx, [esp + 0xc0]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 5
mov eax, dword [esp + 0x38c]
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.0043ce20
mov ecx, 1
test byte [esp + 0x2d], 1
je 0x413e78
mov edx, dword [esp + 0x30]
jmp 0x413e84
add edi, 1
mov edx, dword [esp + 0x30]
jmp 0x413ddb
cmp ecx, 2
mov ebx, esi
je 0x413e8d
mov edx, eax
mov dword [esp + 0x30], edx
mov al, byte [esp + 0xb4]
mov byte [esp + 0x1b4], al
mov byte [esp + 0xb8], 0x60
mov byte [esp + 0xb9], 0x6b
mov byte [esp + 0xba], 0x6a
mov byte [esp + 0xbb], 0xa9
mov eax, 4
mov byte [esp + eax + 0xb8], 0
add eax, 1
cmp eax, 8
jne 0x413ec4
xor edi, edi
cmp edi, 8
jae 0x413f23
movzx edx, byte [esp + edi + 0xb8]
mov ebx, edi
shl ebx, 1
and ebx, 0xbe7d93ce
mov eax, edi
shl eax, 1
and eax, 0xbe7d93ce
mov ecx, edi
add ecx, 0xdf3ec9e7
sub ecx, eax
add ecx, ebx
mov ebx, esi
xor ecx, edx
mov eax, ecx
shl eax, 1
and eax, 0xf8
xor ecx, 0x7c
add ecx, eax
add cl, 1
mov byte [esp + edi + 0xb8], cl
add edi, 1
jmp 0x413ed6
mov eax, dword [esp + 0xb8]
cmp dword [esp + 0x30], eax
mov edi, dword [esp + 0x28]
jne 0x4143da
mov eax, dword [esp + 0xc0]
mov ecx, eax
and ecx, 2
shl ecx, 1
xor eax, 2
add eax, ecx
mov dword [esp], eax
call fcn.00439c70
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0xc0]
sub eax, 0xfffffffe
mov dword [esp + 0x390], eax
mov eax, dword [esp + 0x3dc]
mov dword [esp + 0x388], eax
mov al, byte [esp + 0x1b8]
mov byte [esp + 0x200], al
mov byte [esp + 0x1bc], 0x97
mov byte [esp + 0x1bd], 0x96
mov byte [esp + 0x1be], 0x95
mov byte [esp + 0x1bf], 0x94
mov eax, 4
mov byte [esp + eax + 0x1bc], 0
add eax, 1
cmp eax, 5
jne 0x413fa9
xor eax, eax
cmp eax, 5
jae 0x413ffc
movzx edx, byte [esp + eax + 0x1bc]
mov edi, eax
shl edi, 1
and edi, 0x29840848
mov ecx, eax
xor ecx, 0x94c20424
add ecx, edi
xor ecx, edx
add ecx, 0x1835eb4b
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0x1bc], cl
add eax, 1
jmp 0x413fbb
mov edx, dword [esp + 0x1bc]
xor edi, edi
mov ecx, 2
cmp edi, dword [0x44c3b8]
jb 0x41401b
mov edi, dword [esp + 0x28]
jmp 0x4140b4
mov dword [esp + 0x54], edx
mov edx, dword [0x44c3bc]
cmp dword [edx + edi*8], 0xae6e2b0b
sete bl
xor ecx, ecx
test bl, 1
jne 0x414038
jmp 0x414095
mov edx, dword [edx + edi*8 + 4]
mov ecx, 2
cmp edx, dword [esp + 0x54]
je 0x414095
mov eax, dword [0x44c3c0]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 5
mov eax, dword [esp + 0x388]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov eax, dword [esp + 0x58]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x390]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0
call fcn.0043ce20
mov ecx, 1
test bl, 1
je 0x4140a6
mov ebx, esi
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x54]
jmp 0x4140b4
add edi, 1
mov ebx, esi
mov edx, dword [esp + 0x54]
jmp 0x414005
cmp ecx, 2
je 0x4140bb
mov edx, eax
cmp edx, 0
jl 0x4143ce
mov edi, dword [esp + 0x3b4]
mov dword [esp], edi
call fcn.00417410
xor ecx, ecx
mov dword [esp + 0x380], eax
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 0x4140fd
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
xor ecx, ecx
mov dword [esp + 0x268], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ee90
mov eax, dword [esp + 0x58]
mov ebx, eax
add ebx, 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
jmp 0x414142
cmp eax, dword [ebx]
jb 0x414160
mov cx, word [eax]
cmp cx, 0
je 0x414160
movzx ecx, cx
cmp ecx, 0x5c
jne 0x41415b
mov edi, eax
jmp 0x414162
add eax, 0xfffffffe
jmp 0x414142
jmp 0x414162
mov eax, dword [ebx]
xor ecx, ecx
sub ecx, eax
add edi, ecx
sar edi, 1
mov eax, edi
add eax, dword [esp + 0x380]
sub eax, 0xffffffff
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41418e
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
mov ecx, dword [ebx]
mov ebx, eax
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edi
call fcn.004174a0
mov dword [esp], eax
mov eax, dword [esp + 0x268]
mov dword [esp + 4], eax
call fcn.0040e480
mov edi, eax
jmp 0x4141c1
mov eax, dword [esp + 0x268]
mov dword [esp], eax
call fcn.0040cc50
sub edi, 0xdee16230
sub edi, ebx
add edi, 0xdee16230
sar edi, 1
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4141fb
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
mov dword [esp], ebx
mov dword [esp + 0x278], eax
mov dword [esp + 4], eax
call fcn.00438220
mov dword [esp], ebx
call fcn.0040cc50
mov edi, dword [esp + 0x3b8]
mov dword [esp], edi
call fcn.00417410
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 0x414253
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
xor ecx, ecx
mov dword [esp + 0x26c], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ee90
lea ecx, [esp + 0x510]
mov dword [esp], 1
call fcn.0040d360
sub esp, 4
xor edi, edi
mov ebx, dword [esp + 0x3c0]
mov dword [esp], ebx
call fcn.00404e70
cmp edi, eax
jb 0x4142ac
jmp 0x414390
mov dword [esp], ebx
mov dword [esp + 4], edi
call fcn.00404e50
mov dword [esp], eax
call fcn.004047d0
mov ebx, eax
cmp ebx, 0
jne 0x4142cc
jmp 0x414380
mov dword [esp], ebx
call fcn.00417410
add eax, 1
mov ecx, 2
mov dword [esp + 0x37c], eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4142f4
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
mov dword [esp + 0x374], eax
xor ecx, ecx
mov dword [esp], eax
mov eax, dword [esp + 0x37c]
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040ee90
lea eax, [esp + 0x510]
xor ecx, ecx
mov dword [esp], eax
mov eax, dword [esp + 0x26c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x278]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x374]
mov ebx, eax
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x3b0]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x3bc]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
call fcn.00420510
mov dword [esp], ebx
call fcn.0040cc50
jmp 0x414380
xor eax, eax
sub eax, edi
add eax, 0xffffffff
xor edi, edi
sub edi, eax
jmp 0x414294
mov eax, dword [esp + 0x26c]
mov dword [esp], eax
call fcn.0040cc50
jmp 0x4143a1
mov eax, dword [esp + 0x278]
mov dword [esp], eax
call fcn.0040cc50
lea ecx, [esp + 0x510]
call fcn.0040de60
lea ecx, [esp + 0x510]
call fcn.0040d410
mov ebx, esi
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x58]
mov dword [esp], eax
call fcn.00439cf0
lea ecx, [esp + 0x3dc]
call fcn.00417560
jmp 0x4143e8
jmp 0x415413
mov al, byte [esp + 0xb0]
mov byte [esp + 0x1c4], al
mov byte [esp + 0x2dc], 0xdc
mov byte [esp + 0x2dd], 0x4b
mov eax, 2
mov byte [esp + eax + 0x2dc], 0
add eax, 1
cmp eax, 7
jne 0x414410
xor eax, eax
cmp eax, 7
jae 0x414450
movzx edx, byte [esp + eax + 0x2dc]
mov ecx, eax
add ecx, 0x39ee7df3
mov edi, ecx
and edi, edx
shl edi, 1
add ecx, edx
sub ecx, edi
add cl, 0x41
mov byte [esp + eax + 0x2dc], cl
add eax, 1
jmp 0x414422
lea eax, [esp + 0x2dc]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046c0
mov esi, eax
mov al, byte [esp + 0xac]
mov byte [esp + 0x1c8], al
mov byte [esp + 0x2d4], 0x16
mov byte [esp + 0x2d5], 0x8f
mov eax, 2
mov byte [esp + eax + 0x2d4], 0
add eax, 1
cmp eax, 6
jne 0x41448c
xor eax, eax
cmp eax, 6
jae 0x414511
movzx edi, byte [esp + eax + 0x2d4]
mov edx, eax
add edx, 0xdd
and edx, edi
mov ecx, 0x22
sub ecx, eax
mov ebx, 0x22
sub ebx, eax
or ecx, ebx
mov ebx, 0x22
sub ebx, eax
and ecx, ebx
and ecx, edi
mov ebx, eax
add ebx, 0x6f7e21dd
xor ebx, edi
sub ebx, edi
add ebx, edx
mov edx, ebx
xor edx, 0xffffffff
mov edi, ecx
and edi, edx
mov edx, ecx
xor edx, ebx
add ecx, edx
sub ecx, edi
add cl, 0xaf
mov byte [esp + eax + 0x2d4], cl
mov ecx, eax
add ecx, 1
mov edx, eax
xor edx, 0xffffffff
or edx, 1
or eax, 1
add edx, eax
add ecx, edx
mov eax, ecx
jmp 0x41449e
lea eax, [esp + 0x2d4]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004046c0
mov ebx, eax
test esi, esi
sete al
test ebx, ebx
sete cl
or al, cl
test al, 1
jne 0x41453c
jmp 0x414548
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0x28]
jmp 0x414e61
mov dword [esp], esi
call fcn.00417410
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 dl
mov ecx, 0xffffffff
test dl, 1
jne 0x414576
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
xor ecx, ecx
mov dword [esp + 0x2a8], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040ee90
mov dword [esp], ebx
call fcn.00417410
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 dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4145cd
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
xor ecx, ecx
mov dword [esp + 0x2a4], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040ee90
mov al, byte [esp + 0xa8]
mov byte [esp + 0x1cc], al
mov byte [esp + 0x2cc], 0xce
mov byte [esp + 0x2cd], 0x2b
mov eax, 2
mov byte [esp + eax + 0x2cc], 0
add eax, 1
cmp eax, 7
jne 0x414619
xor eax, eax
cmp eax, 7
jae 0x41469f
movzx edx, byte [esp + eax + 0x2cc]
mov ecx, eax
add ecx, 0x2c47777
mov edi, ecx
xor edi, edx
mov ebx, 0xfd3b8888
sub ebx, eax
or ebx, edi
mov edi, ebx
xor edi, 0xffffffff
mov esi, ebx
and esi, 2
and ebx, 0xfffffffd
xor ebx, 0xfffffffd
imul ebx, esi
mov esi, edi
and esi, 2
or edi, 2
imul edi, esi
add edi, ebx
mov esi, edi
xor esi, 0xffffffff
and ecx, esi
mov esi, 0xfd3b8888
sub esi, eax
and edi, esi
sub ecx, edi
add ecx, edx
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, 0x58
add ecx, edx
add cl, 0x54
mov byte [esp + eax + 0x2cc], cl
add eax, 1
jmp 0x41462b
lea eax, [esp + 0x2cc]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046c0
mov ebx, eax
mov dword [esp + 0x64], 0
cmp ebx, 0
je 0x414710
mov dword [esp], ebx
call fcn.00417410
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4146ea
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
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.0040ee90
mov al, byte [esp + 0xa4]
mov byte [esp + 0x1d0], al
mov byte [esp + 0x2c4], 0x6e
mov byte [esp + 0x2c5], 1
mov eax, 2
mov byte [esp + eax + 0x2c4], 0
add eax, 1
cmp eax, 5
jne 0x414733
xor eax, eax
cmp eax, 5
jae 0x414781
movzx edi, byte [esp + eax + 0x2c4]
mov ecx, 0x7f
sub ecx, eax
or ecx, edi
mov edx, 0x7f
sub edx, eax
mov esi, 0x7f
sub esi, eax
or edx, esi
and edx, edi
xor ecx, 0xffffffff
or edx, ecx
xor dl, 0x80
mov byte [esp + eax + 0x2c4], dl
add eax, 1
jmp 0x414745
lea eax, [esp + 0x2c4]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046c0
mov ebx, eax
xor esi, esi
cmp ebx, 0
je 0x4147f3
mov dword [esp], ebx
call fcn.00417410
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 dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4147cf
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
mov esi, eax
xor eax, eax
mov dword [esp], esi
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040ee90
mov al, byte [esp + 0xa0]
mov byte [esp + 0x1d4], al
mov byte [esp + 0x2bc], 4
mov byte [esp + 0x2bd], 0x91
mov eax, 2
mov byte [esp + eax + 0x2bc], 0
add eax, 1
cmp eax, 7
jne 0x414816
xor eax, eax
mov ebx, dword [ebp + 8]
cmp eax, 7
jae 0x414855
mov cl, byte [esp + eax + 0x2bc]
mov dl, al
add dl, 0x24
xor dl, cl
add dl, 0x4c
mov byte [esp + eax + 0x2bc], dl
mov ecx, eax
shl ecx, 1
or ecx, 1
sub ecx, eax
mov eax, ecx
jmp 0x41482b
lea eax, [esp + 0x2bc]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046c0
mov edi, eax
mov dword [esp + 0x60], 0
cmp edi, 0
je 0x4148c9
mov dword [esp], edi
call fcn.00417410
mov ebx, eax
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4148a0
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
xor ecx, ecx
mov dword [esp + 0x60], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ee90
mov ebx, dword [ebp + 8]
mov al, byte [esp + 0x9c]
mov byte [esp + 0x1d8], al
mov byte [esp + 0x238], 5
mov byte [esp + 0x239], 0x69
mov byte [esp + 0x23a], 0xe2
mov eax, 3
mov byte [esp + eax + 0x238], 0
add eax, 1
cmp eax, 7
jne 0x4148f4
xor eax, eax
mov dword [esp + 0x2a0], esi
cmp eax, 7
jae 0x414975
movzx edi, byte [esp + eax + 0x238]
mov edx, 0xc70979d7
sub edx, eax
or edx, edi
mov ecx, 0xd7
sub ecx, eax
mov esi, 0xd7
sub esi, eax
mov ebx, 0xd7
sub ebx, eax
and esi, ebx
mov ebx, dword [ebp + 8]
or ecx, esi
and ecx, edi
xor edx, 0xffffffff
or ecx, edx
mov esi, ecx
add esi, 0xe32f6137
mov edx, esi
and edx, 1
and esi, 1
xor esi, 0xffffffff
add ecx, 0x39
add ecx, esi
or edx, 0x96
add edx, ecx
add dl, 0x6a
mov byte [esp + eax + 0x238], dl
add eax, 1
jmp 0x41490d
lea eax, [esp + 0x238]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00404920
xor ecx, ecx
cmp eax, 0
mov esi, 0
mov edi, dword [esp + 0x28]
je 0x414d3a
mov dword [esp + 0x3a8], eax
mov dword [esp], eax
call fcn.00404e70
mov ecx, 0xc
mov dword [esp + 0x38], eax
mul ecx
seto dl
add eax, 4
setb cl
or dl, cl
mov ecx, 0xffffffff
test dl, 1
jne 0x4149cd
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
mov ecx, dword [esp + 0x38]
mov dword [eax], ecx
add eax, 4
cmp ecx, 0
mov dword [esp + 0x290], eax
je 0x414a12
imul ecx, ecx, 0xc
mov edi, eax
add edi, ecx
jmp 0x4149f3
mov ebx, eax
jmp 0x4149f7
mov ecx, ebx
call fcn.00417570
add ebx, 0xc
cmp ebx, edi
jne 0x4149f7
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0x38]
jmp 0x414a12
xor edx, edx
jmp 0x414a16
cmp edx, ecx
mov eax, dword [esp + 0x3a8]
jb 0x414a2d
mov esi, dword [esp + 0x290]
jmp 0x414d3a
mov dword [esp], eax
mov dword [esp + 0x3a0], edx
mov dword [esp + 4], edx
call fcn.00404e80
mov ebx, eax
mov al, byte [esp + 0x98]
mov byte [esp + 0x1dc], al
mov byte [esp + 0x230], 0xbb
mov byte [esp + 0x231], 0xb1
mov byte [esp + 0x232], 0x26
mov eax, 3
mov byte [esp + eax + 0x230], 0
add eax, 1
cmp eax, 8
jne 0x414a6d
xor eax, eax
cmp eax, 8
jae 0x414ab2
movzx esi, byte [esp + eax + 0x230]
mov ecx, 6
sub ecx, eax
or ecx, esi
mov edx, 6
sub edx, eax
and edx, esi
xor ecx, 0xffffffff
or edx, ecx
add dl, 0x23
mov byte [esp + eax + 0x230], dl
add eax, 1
jmp 0x414a7f
lea eax, [esp + 0x230]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.004046c0
mov dword [esp + 0x398], eax
mov al, byte [esp + 0x94]
mov byte [esp + 0x1e0], al
mov byte [esp + 0x228], 0xad
mov byte [esp + 0x229], 0x9b
mov byte [esp + 0x22a], 0x12
mov eax, 3
mov byte [esp + eax + 0x228], 0
add eax, 1
cmp eax, 5
jne 0x414af7
xor eax, eax
mov dword [esp + 0x280], ebx
cmp eax, 5
jae 0x414b8b
movzx ecx, byte [esp + eax + 0x228]
mov edx, eax
add edx, 0x3fa675bc
mov edi, ecx
and edi, 4
mov ebx, eax
add ebx, 0x3fa675bc
mov esi, eax
add esi, 0x3fa675bc
and ebx, esi
and ebx, 0x895cabfb
and edx, 0x76a35404
and ecx, 0xfb
or ecx, 0x64231000
or edi, 0x657b91a8
xor ecx, edi
or ebx, edx
xor ecx, ebx
mov ebx, dword [esp + 0x280]
xor ecx, 0x15881a8
add ecx, 0xc1bfb353
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0x228], cl
add eax, 1
jmp 0x414b10
lea eax, [esp + 0x228]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.004046c0
mov dword [esp + 0x394], eax
mov al, byte [esp + 0x88]
mov byte [esp + 0x1e4], al
mov byte [esp + 0x8c], 0x68
mov byte [esp + 0x8d], 0x17
mov byte [esp + 0x8e], 0x14
mov byte [esp + 0x8f], 0xf9
mov eax, 4
mov byte [esp + eax + 0x8c], 0
add eax, 1
cmp eax, 7
jne 0x414bd8
xor eax, eax
mov edi, dword [esp + 0x28]
cmp eax, 7
jae 0x414c29
movzx edx, byte [esp + eax + 0x8c]
mov ecx, eax
add ecx, 0x5aa8472b
xor ecx, edx
add ecx, 0x3ab69c28
mov edx, ecx
shl edx, 1
and edx, 0x96
xor ecx, 0x4b
add ecx, edx
add cl, 0xb6
mov byte [esp + eax + 0x8c], cl
add eax, 1
jmp 0x414bee
lea eax, [esp + 0x8c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00404a50
xor ebx, ebx
cmp eax, 0
setg byte [esp + 0x2e]
mov al, byte [esp + 0x7c]
mov byte [esp + 0x1e8], al
mov byte [esp + 0x80], 0xa9
mov byte [esp + 0x81], 0x98
mov byte [esp + 0x82], 0xab
mov byte [esp + 0x83], 0x21
mov eax, 4
mov byte [esp + eax + 0x80], 0
add eax, 1
cmp eax, 5
jne 0x414c76
xor eax, eax
cmp eax, 5
jae 0x414cc3
movzx edx, byte [esp + eax + 0x80]
mov ecx, eax
shl ecx, 1
and ecx, 0xc49b9392
mov esi, eax
xor esi, 0xe24dc9c9
add esi, ecx
mov ecx, esi
or ecx, edx
and esi, edx
add ecx, 0x3d
sub ecx, esi
add cl, 0xd6
mov byte [esp + eax + 0x80], cl
add eax, 1
jmp 0x414c88
lea eax, [esp + 0x80]
mov ecx, dword [esp + 0x280]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00404a50
xor edx, edx
cmp eax, 0
setg dl
mov esi, dword [esp + 0x3a0]
imul eax, esi, 0xc
mov ecx, dword [esp + 0x290]
add ecx, eax
mov eax, dword [esp + 0x398]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x394]
mov dword [esp], eax
and edx, 1
mov dword [esp + 0xc], edx
mov al, byte [esp + 0x2e]
mov bl, al
and ebx, 1
mov dword [esp + 8], ebx
call fcn.00417590
sub esp, 0x10
mov edx, esi
add edx, 1
mov ebx, dword [ebp + 8]
mov ecx, dword [esp + 0x38]
jmp 0x414a16
mov dword [esp + 0x38], ecx
mov eax, dword [esp + 0x2a4]
mov dword [esp + 0x3ec], eax
mov eax, dword [esp + 0x2a8]
mov dword [esp + 0x3f0], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x3f4], eax
mov eax, dword [esp + 0x2a0]
mov dword [esp + 0x3f8], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x3fc], eax
lea ecx, [esp + 0x488]
mov dword [esp], 2
call fcn.0040d360
sub esp, 4
lea eax, [esp + 0x488]
lea ecx, [esp + 0x3ec]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], esi
mov eax, dword [esp + 0x38]
mov dword [esp + 0xc], eax
call fcn.00417c10
lea ecx, [esp + 0x488]
call fcn.0040de60
cmp esi, 0
je 0x414dfd
mov ebx, esi
add ebx, 0xfffffffc
imul eax, dword [esi - 4], 0xc
mov edi, esi
add edi, eax
cmp esi, edi
je 0x414dee
jmp 0x414dde
add edi, 0xfffffff4
mov ecx, edi
call fcn.004176f0
cmp edi, esi
jne 0x414dde
jmp 0x414dee
mov dword [esp], ebx
call fcn.0040cc50
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x2a0]
jmp 0x414e06
mov eax, dword [esp + 0x2a4]
mov dword [esp], eax
call fcn.0040cc50
jmp 0x414e17
mov eax, dword [esp + 0x2a8]
mov dword [esp], eax
call fcn.0040cc50
mov eax, dword [esp + 0x64]
cmp eax, 0
je 0x414e37
mov dword [esp], eax
call fcn.0040cc50
cmp esi, 0
je 0x414e44
mov dword [esp], esi
call fcn.0040cc50
mov eax, dword [esp + 0x60]
cmp eax, 0
je 0x414e55
mov dword [esp], eax
call fcn.0040cc50
lea ecx, [esp + 0x488]
call fcn.0040d410
jmp 0x415413
mov al, byte [esp + 0x78]
mov byte [esp + 0x1ec], al
mov byte [esp + 0x2b4], 0x7c
mov byte [esp + 0x2b5], 0xb
mov eax, 2
mov byte [esp + eax + 0x2b4], 0
add eax, 1
cmp eax, 5
jne 0x414e86
xor eax, eax
cmp eax, 5
jae 0x414ed1
movzx edx, byte [esp + eax + 0x2b4]
mov ecx, eax
add ecx, 0x1ec6fd83
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 2
mov ebx, ecx
or ebx, 1
add ebx, 0x70
and ecx, 1
sub ebx, ecx
add ebx, edx
mov byte [esp + eax + 0x2b4], bl
add eax, 1
jmp 0x414e98
lea eax, [esp + 0x2b4]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046c0
mov ebx, eax
mov al, byte [esp + 0x74]
mov byte [esp + 0x1f0], al
mov byte [esp + 0x2ac], 0xa
mov byte [esp + 0x2ad], 0x8b
mov eax, 2
mov byte [esp + eax + 0x2ac], 0
add eax, 1
cmp eax, 7
jne 0x414f0a
xor eax, eax
cmp eax, 7
jae 0x414f8d
movzx edi, byte [esp + eax + 0x2ac]
mov edx, eax
add edx, 0x51c3dba3
or edx, edi
mov ecx, 0x5c
sub ecx, eax
mov esi, 0x5c
sub esi, eax
and ecx, esi
xor ecx, 0xffffffff
and ecx, edi
mov esi, edx
xor esi, ecx
xor ecx, edx
shl ecx, 1
sub ecx, esi
mov edx, ecx
shl edx, 1
and edx, 0xce596ba0
mov esi, ecx
and esi, edx
shl esi, 1
xor ecx, edx
xor ecx, 0xd0
add ecx, esi
add cl, 1
mov byte [esp + eax + 0x2ac], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
mov edx, eax
shl edx, 1
and edx, 2
add edx, 0xffffffff
sub eax, edx
add eax, ecx
jmp 0x414f1c
lea eax, [esp + 0x2ac]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004046c0
mov edi, eax
test ebx, ebx
sete al
test edi, edi
sete cl
or al, cl
test al, 1
jne 0x414fb8
jmp 0x414fc4
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0x28]
jmp 0x415411
mov esi, ebx
mov dword [esp], ebx
call fcn.00417410
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 0x414ff1
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
xor ecx, ecx
mov dword [esp + 0x29c], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040ee90
mov dword [esp], edi
call fcn.00417410
mov ebx, eax
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41503f
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
xor ecx, ecx
mov dword [esp + 0x298], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ee90
mov al, byte [esp + 0x70]
mov byte [esp + 0x1f4], al
mov byte [esp + 0x220], 0x53
mov byte [esp + 0x221], 0x5f
mov byte [esp + 0x222], 0xc6
mov eax, 3
mov byte [esp + eax + 0x220], 0
add eax, 1
cmp eax, 6
jne 0x415090
xor eax, eax
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0x28]
cmp eax, 6
jae 0x4150f6
movzx ecx, byte [esp + eax + 0x220]
mov esi, eax
shl esi, 1
and esi, 0xd942afa2
mov edx, eax
xor edx, 0x6ca157d1
add edx, esi
mov esi, ecx
shl esi, 1
xor esi, 0xffffffff
add esi, ecx
mov ebx, edx
and ebx, esi
mov esi, edx
shl esi, 1
xor esi, 0xffffffff
add edx, esi
and edx, ecx
or ebx, edx
add bl, 0xeb
mov byte [esp + eax + 0x220], bl
mov ebx, dword [ebp + 8]
add eax, 1
jmp 0x4150a9
lea eax, [esp + 0x220]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00404920
xor esi, esi
cmp eax, 0
mov dword [esp + 0x34], 0
je 0x41534a
mov dword [esp + 0x39c], eax
mov dword [esp], eax
call fcn.00404e70
mov ecx, 8
mov dword [esp + 0x34], eax
mul ecx
seto cl
add eax, 4
setb dl
mov dh, cl
adc dh, 0
and dl, cl
sub dh, dl
mov ecx, 0xffffffff
test dh, 1
jne 0x415154
mov ecx, eax
mov dword [esp], ecx
call fcn.0040cc40
mov esi, eax
mov eax, dword [esp + 0x34]
mov dword [esi], eax
add esi, 4
cmp eax, 0
je 0x415190
mov eax, dword [esp + 0x34]
shl eax, 3
mov ebx, esi
add ebx, eax
jmp 0x415179
mov edi, esi
jmp 0x41517d
mov ecx, edi
call fcn.00417720
add edi, 8
cmp edi, ebx
jne 0x41517d
mov ebx, dword [ebp + 8]
jmp 0x415190
xor edi, edi
mov dword [esp + 0x284], esi
jmp 0x41519b
cmp edi, dword [esp + 0x34]
setb al
test al, 1
jne 0x4151b1
jmp 0x4151a8
mov edi, dword [esp + 0x28]
jmp 0x41534a
mov eax, dword [esp + 0x39c]
mov dword [esp], eax
mov dword [esp + 4], edi
call fcn.00404e80
mov dword [esp + 0x274], eax
mov al, byte [esp + 0x6c]
mov byte [esp + 0x1f8], al
mov byte [esp + 0x218], 0xfb
mov byte [esp + 0x219], 0xf1
mov byte [esp + 0x21a], 0x66
mov eax, 3
mov byte [esp + eax + 0x218], 0
add eax, 1
cmp eax, 6
jne 0x4151f3
xor eax, eax
cmp eax, 6
jae 0x415248
mov cl, byte [esp + eax + 0x218]
movzx esi, cl
mov ebx, eax
xor ebx, 0xf29e0267
mov edx, eax
shl edx, 1
and edx, 0x1ac3fb30
sub edx, ebx
mov ebx, edx
and ebx, esi
mov esi, dword [esp + 0x284]
shl ebx, 1
sub edx, ebx
add dl, cl
add dl, 3
mov byte [esp + eax + 0x218], dl
add eax, 1
jmp 0x415205
lea eax, [esp + 0x218]
mov ecx, dword [esp + 0x274]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046c0
mov dword [esp + 0x384], eax
mov al, byte [esp + 0x68]
mov byte [esp + 0x1fc], al
mov byte [esp + 0x210], 0x9f
mov byte [esp + 0x211], 0xf5
mov byte [esp + 0x212], 0x7a
mov eax, 3
mov byte [esp + eax + 0x210], 0
add eax, 1
cmp eax, 5
jne 0x415291
xor eax, eax
cmp eax, 5
jae 0x415306
movzx edx, byte [esp + eax + 0x210]
mov ecx, eax
add ecx, 0xe96c95bf
mov esi, edx
shl esi, 1
xor esi, 0xffffffff
add esi, edx
and ecx, esi
mov esi, 0x16936a40
sub esi, eax
or esi, edx
xor esi, 0xffffffff
mov ebx, ecx
or ebx, esi
mov esi, 0x40
sub esi, eax
and esi, edx
mov edx, esi
xor edx, ebx
and esi, ecx
or edx, esi
mov esi, dword [esp + 0x284]
mov ecx, edx
shl ecx, 1
and ecx, 2
xor edx, 1
add edx, 0x44
add edx, ecx
mov byte [esp + eax + 0x210], dl
add eax, 1
jmp 0x4152a3
lea eax, [esp + 0x210]
mov ecx, dword [esp + 0x274]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004046c0
mov edx, edi
shl edx, 3
mov ecx, esi
add ecx, edx
mov dword [esp], eax
mov eax, dword [esp + 0x384]
mov dword [esp + 4], eax
call fcn.00417730
sub esp, 8
add edi, 1
mov ebx, dword [ebp + 8]
jmp 0x41519b
lea ecx, [esp + 0x400]
mov dword [esp], 3
call fcn.0040d360
sub esp, 4
lea eax, [esp + 0x400]
mov dword [esp], eax
mov eax, dword [esp + 0x29c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x298]
mov dword [esp + 8], eax
mov dword [esp + 0xc], esi
mov eax, dword [esp + 0x34]
mov dword [esp + 0x10], eax
call fcn.0041e140
lea ecx, [esp + 0x400]
call fcn.0040de60
cmp esi, 0
sete al
test al, 1
jne 0x4153df
jmp 0x4153a9
mov edi, esi
add edi, 0xfffffffc
mov eax, dword [esi - 4]
shl eax, 3
mov ebx, esi
add ebx, eax
cmp esi, ebx
je 0x4153ce
jmp 0x4153be
add ebx, 0xfffffff8
mov ecx, ebx
call fcn.004177e0
cmp ebx, esi
jne 0x4153be
jmp 0x4153ce
mov dword [esp], edi
call fcn.0040cc50
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0x28]
jmp 0x4153df
jmp 0x4153e1
mov eax, dword [esp + 0x29c]
mov dword [esp], eax
call fcn.0040cc50
jmp 0x4153f2
mov eax, dword [esp + 0x298]
mov dword [esp], eax
call fcn.0040cc50
lea ecx, [esp + 0x400]
call fcn.0040d410
jmp 0x41540f
jmp 0x415411
jmp 0x415413
mov esi, dword [esp + 0x3c4]
jmp 0x41541c
sub edi, 0xffffffff
jmp 0x4127f5
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret