Function at 0x40f054
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x600
mov edi, dword [ebp + 8]
mov al, byte [esp + 0x14c]
mov byte [esp + 0x150], al
mov byte [esp + 0x350], 0xd3
mov byte [esp + 0x351], 0x31
mov eax, 2
mov byte [esp + eax + 0x350], 0
add eax, 1
cmp eax, 8
jne 0x40e2f5
xor eax, eax
cmp eax, 8
jae 0x40e341
mov dl, byte [esp + eax + 0x350]
mov esi, eax
add esi, 0xf4
mov ecx, 0xb
sub ecx, eax
and ecx, 0xa
and esi, 0xf5
or ecx, esi
xor cl, dl
xor cl, 0xa
add cl, 0x3c
mov byte [esp + eax + 0x350], cl
add eax, 1
jmp 0x40e307
lea eax, [esp + 0x350]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00401970
mov esi, eax
cmp esi, 0
jne 0x40e362
xor eax, eax
jmp 0x410e76
xor edi, edi
jmp 0x40e366
mov dword [esp], esi
call fcn.00401b90
cmp edi, eax
jb 0x40e379
mov al, 1
jmp 0x410e76
mov dword [esp], esi
mov dword [esp + 4], edi
call fcn.00401ba0
mov dword [esp + 0x24], eax
mov al, byte [esp + 0x148]
mov byte [esp + 0x154], al
mov byte [esp + 0x348], 0
mov byte [esp + 0x349], 0x8b
mov eax, 2
mov byte [esp + eax + 0x348], 0
add eax, 1
cmp eax, 6
jne 0x40e3ac
mov dword [esp + 0x28], edi
xor eax, eax
cmp eax, 6
jae 0x40e418
movzx edx, byte [esp + eax + 0x348]
mov edi, eax
add edi, 0x74c448a3
mov ecx, 0x8b3bb75c
sub ecx, eax
and ecx, 0x9af4518c
and edi, 0x650bae73
or ecx, edi
xor ecx, edx
mov edx, ecx
xor edx, 0x8c
mov edi, ecx
shl edi, 1
and edi, 2
shl ecx, 1
and ecx, 2
sub edx, ecx
add edx, 0xd1
add edx, edi
mov byte [esp + eax + 0x348], dl
add eax, 1
jmp 0x40e3c2
lea eax, [esp + 0x348]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401b30
cmp eax, 0
setne al
xor al, 0xff
and al, 1
or al, 0
xor al, 0
test al, 1
jne 0x40e44b
jmp 0x40e454
mov edi, dword [esp + 0x28]
jmp 0x410e6c
mov al, byte [esp + 0x144]
mov byte [esp + 0x158], al
mov byte [esp + 0x340], 0x18
mov byte [esp + 0x341], 0x8f
mov eax, 2
mov byte [esp + eax + 0x340], 0
add eax, 1
cmp eax, 8
jne 0x40e477
xor eax, eax
cmp eax, 8
jae 0x40e4c0
movzx edx, byte [esp + eax + 0x340]
mov ecx, eax
add ecx, 0x30a8f81d
mov edi, ecx
and edi, edx
shl edi, 1
add ecx, edx
sub ecx, edi
add cl, 0x6f
mov byte [esp + eax + 0x340], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40e489
mov dword [esp + 0x3a0], esi
lea eax, [esp + 0x340]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00401900
fnstcw word [esp + 0x5e]
movzx eax, word [esp + 0x5e]
or eax, 0xc00
mov word [esp + 0x21e], ax
fldcw word [esp + 0x21e]
fistp dword [esp + 0x3b4]
fldcw word [esp + 0x5e]
mov eax, dword [esp + 0x3b4]
mov edi, dword [esp + 0x28]
mov ecx, eax
sub ecx, 3
ja 0x410e63
mov eax, dword [eax*4 + 0x43f2bc]
jmp eax
mov al, byte [esp + 0x140]
mov byte [esp + 0x15c], al
mov byte [esp + 0x50], 0x14
mov byte [esp + 0x51], 0xbb
mov eax, 2
mov byte [esp + eax + 0x50], 0
add eax, 1
cmp eax, 4
jne 0x40e542
xor eax, eax
cmp eax, 4
jae 0x40e5ad
movzx edx, byte [esp + eax + 0x50]
mov edi, eax
shl edi, 1
and edi, 0x7430953e
mov ecx, eax
xor ecx, 0x3a184a9f
add ecx, edi
mov edi, ecx
and edi, edx
shl edi, 1
add ecx, edx
sub ecx, edi
mov edi, ecx
add edi, 0xdd868ae5
mov edx, 0x2279751b
sub edx, ecx
or edx, 1
add edx, edi
or ecx, 1
add ecx, 0xdd868ae4
mov edi, ecx
and edi, edx
shl edi, 1
xor ecx, edx
add ecx, edi
mov edi, dword [esp + 0x28]
mov byte [esp + eax + 0x50], cl
add eax, 1
jmp 0x40e551
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.00401b30
cmp eax, 0
setne al
test al, 1
jne 0x40e5d8
jmp 0x40e922
mov al, byte [esp + 0x134]
mov byte [esp + 0x160], al
mov byte [esp + 0x138], 0xd
mov byte [esp + 0x139], 0x11
mov byte [esp + 0x13a], 0x12
mov byte [esp + 0x13b], 0x13
mov eax, 4
mov byte [esp + eax + 0x138], 0
add eax, 1
cmp eax, 6
jne 0x40e60b
xor eax, eax
cmp eax, 6
jae 0x40e64e
mov dl, byte [esp + eax + 0x138]
mov edi, eax
shl edi, 1
and edi, 0xf8
mov ecx, eax
xor ecx, 0xfc
add ecx, edi
xor cl, dl
add cl, 0x14
mov byte [esp + eax + 0x138], cl
add eax, 1
jmp 0x40e61d
mov eax, dword [esp + 0x138]
mov dword [esp + 0x360], eax
mov cl, byte [esp + 0x130]
mov byte [esp + 0x164], cl
mov byte [esp + 0x338], 0xbd
mov byte [esp + 0x339], 0x21
mov ecx, 2
mov byte [esp + ecx + 0x338], 0
add ecx, 1
cmp ecx, 6
jne 0x40e67f
xor edi, edi
cmp edi, 6
jae 0x40e6f6
mov dl, byte [esp + edi + 0x338]
mov eax, edi
shl eax, 1
and eax, 0x70
mov ecx, edi
shl ecx, 1
and ecx, 0x70
add ecx, 0xc8
mov ebx, edi
sub ebx, ecx
add ebx, eax
xor bl, dl
add bl, 0xe8
mov byte [esp + edi + 0x338], bl
mov eax, edi
add eax, 1
mov edx, edi
xor edx, 0xffffffff
or edx, 1
add edx, eax
mov eax, edx
and eax, 2
xor eax, 2
mov ecx, edx
and ecx, 0xfffffffd
imul ecx, eax
mov eax, edx
and eax, 2
or edx, 2
imul edx, eax
add edx, ecx
xor edi, 1
add edi, edx
jmp 0x40e691
lea eax, [esp + 0x338]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x360]
mov dword [esp + 8], eax
call fcn.00401b30
cmp eax, 0
mov edi, dword [esp + 0x28]
je 0x40e922
mov al, byte [esp + 0x12c]
mov byte [esp + 0x168], al
mov byte [esp + 0x330], 0xca
mov byte [esp + 0x331], 0x71
mov eax, 2
mov byte [esp + eax + 0x330], 0
add eax, 1
cmp eax, 7
jne 0x40e748
xor eax, eax
cmp eax, 7
jae 0x40e7a0
movzx edx, byte [esp + eax + 0x330]
mov edi, eax
add edi, 0x8b3f394
mov ecx, eax
add ecx, 0x94
and ecx, edx
or edi, edx
xor ecx, edi
mov edx, ecx
add edx, 1
mov edi, ecx
xor edi, 0xffffffff
or edi, 0x1b
add edi, edx
or ecx, 0x1b
add ecx, edi
add cl, 1
mov byte [esp + eax + 0x330], cl
add eax, 1
jmp 0x40e75a
lea eax, [esp + 0x330]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401b30
cmp eax, 0
mov edi, dword [esp + 0x28]
je 0x40e922
mov al, byte [esp + 0x128]
mov byte [esp + 0x16c], al
mov byte [esp + 0x328], 0xdc
mov byte [esp + 0x329], 0x71
mov eax, 2
mov byte [esp + eax + 0x328], 0
add eax, 1
cmp eax, 8
jne 0x40e7ef
xor eax, eax
cmp eax, 8
jae 0x40e842
movzx edx, byte [esp + eax + 0x328]
mov edi, eax
add edi, 0x94
mov ecx, eax
add ecx, 0x5e38e894
or ecx, edx
and edi, edx
sub ecx, edi
add ecx, 0x28e3751b
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0x328], cl
add eax, 1
jmp 0x40e801
lea eax, [esp + 0x328]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401b30
cmp eax, 0
mov edi, dword [esp + 0x28]
je 0x40e922
mov al, byte [esp + 0x124]
mov byte [esp + 0x170], al
mov byte [esp + 0x260], 0xaa
mov byte [esp + 0x261], 0x5a
mov byte [esp + 0x262], 0xc6
mov eax, 3
mov byte [esp + eax + 0x260], 0
add eax, 1
cmp eax, 6
jne 0x40e899
xor eax, eax
cmp eax, 6
jae 0x40e8ed
movzx edx, byte [esp + eax + 0x260]
mov edi, eax
xor edi, 0x2977d2f
mov ecx, eax
shl ecx, 1
and ecx, 0xfad105a0
sub ecx, edi
mov edi, dword [esp + 0x28]
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0xd4
xor ecx, 0x15
sub edx, ecx
mov byte [esp + eax + 0x260], dl
add eax, 1
jmp 0x40e8ab
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.00401b30
cmp eax, 0
setne al
xor al, 0xff
and al, 1
or al, 0
test al, 1
jne 0x410e63
jmp 0x40e929
jmp 0x40e924
jmp 0x410e63
mov al, byte [esp + 0x120]
mov byte [esp + 0x174], al
mov byte [esp + 0x320], 0x7c
mov byte [esp + 0x321], 0xb
mov eax, 2
mov byte [esp + eax + 0x320], 0
add eax, 1
cmp eax, 5
jne 0x40e94c
xor eax, eax
cmp eax, 5
jae 0x40e9c0
movzx edx, byte [esp + eax + 0x320]
mov ecx, eax
and ecx, 0x8638a883
mov edi, eax
and edi, 0x79c7577c
xor edi, 0x79c7577c
mov ebx, eax
and ebx, 0x79c7577c
xor ebx, 0x79c7577c
or edi, ebx
xor edi, 0xffffffff
add ecx, edi
mov ebx, ecx
or ebx, edx
mov edi, edx
add edi, 1
xor edx, 0xffffffff
or ecx, edx
add ecx, edi
sub ebx, ecx
add bl, 0x71
mov byte [esp + eax + 0x320], bl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40e95e
lea eax, [esp + 0x320]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov dword [esp + 0x294], eax
mov al, byte [esp + 0x11c]
mov byte [esp + 0x178], al
mov byte [esp + 0x4c], 0x65
mov byte [esp + 0x4d], 0xf1
mov eax, 2
mov byte [esp + eax + 0x4c], 0
add eax, 1
cmp eax, 4
jne 0x40e9fb
xor eax, eax
cmp eax, 4
jae 0x40ea79
movzx edx, byte [esp + eax + 0x4c]
mov edi, eax
shl edi, 1
and edi, 0xcbd36f58
mov ecx, eax
xor ecx, 0x65e9b7ac
add ecx, edi
xor ecx, edx
mov edi, ecx
add edi, 1
mov edx, ecx
xor edx, 0xffffffff
or edx, 0x26f69a3
add edx, edi
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
xor ecx, 0xa3
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x4c], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40ea0a
lea eax, [esp + 0x4c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401970
mov cl, byte [esp + 0x118]
mov byte [esp + 0x17c], cl
mov byte [esp + 0x48], 0x4a
mov byte [esp + 0x49], 0xf1
mov ecx, 2
mov byte [esp + ecx + 0x48], 0
add ecx, 1
cmp ecx, 4
jne 0x40eaaa
mov dword [esp + 0x78], eax
xor eax, eax
cmp eax, 4
jae 0x40eb34
movzx ecx, byte [esp + eax + 0x48]
mov esi, eax
add esi, 0x430a4dd4
mov edx, 0x2b
sub edx, eax
and edx, ecx
mov ebx, ecx
xor ebx, 0xffffffff
mov edi, esi
and edi, ebx
or edi, edx
xor edi, 0xffffffff
mov edx, esi
and edx, edi
mov edi, edx
and edi, 2
xor edi, 2
mov ebx, edx
and ebx, 0xfffffffd
imul ebx, edi
mov edi, edx
and edi, 2
or edx, 2
imul edx, edi
add edx, ebx
mov edi, edx
xor edi, esi
mov ebx, 0x3cf5b22b
sub ebx, eax
and edx, ebx
shl edx, 1
sub edx, edi
mov edi, ecx
xor edi, 0xffffffff
mov ebx, edx
and ebx, edi
xor edx, 0xffffffff
and ecx, edx
sub ecx, ebx
add cl, 0xdc
mov byte [esp + eax + 0x48], cl
add eax, 1
jmp 0x40eabd
lea eax, [esp + 0x48]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov cl, byte [esp + 0x114]
mov byte [esp + 0x180], cl
mov byte [esp + 0x318], 0xac
mov byte [esp + 0x319], 0x11
mov ecx, 2
mov byte [esp + ecx + 0x318], 0
add ecx, 1
cmp ecx, 8
jne 0x40eb6b
mov dword [esp + 0x388], eax
xor edx, edx
cmp edx, 8
jae 0x40ebcf
movzx esi, byte [esp + edx + 0x318]
mov ecx, edx
add ecx, 0x5e5432bc
mov edi, ecx
and edi, esi
mov ebx, edi
and ebx, 2
xor ebx, 2
mov eax, edi
and eax, 0xfd
imul eax, ebx
mov ebx, edi
and ebx, 2
or edi, 2
imul edi, ebx
add edi, eax
add ecx, esi
sub ecx, edi
add cl, 0x54
mov byte [esp + edx + 0x318], cl
add edx, 1
jmp 0x40eb84
lea eax, [esp + 0x318]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00401900
fnstcw word [esp + 0x5c]
movzx eax, word [esp + 0x5c]
or eax, 0xc00
mov word [esp + 0x21c], ax
fldcw word [esp + 0x21c]
fistp dword [esp + 0x3a8]
fldcw word [esp + 0x5c]
mov eax, dword [esp + 0x3a8]
mov dword [esp + 0x38c], eax
mov al, byte [esp + 0x110]
mov byte [esp + 0x184], al
mov byte [esp + 0x258], 0xe6
mov byte [esp + 0x259], 0xd2
mov byte [esp + 0x25a], 0x42
mov eax, 3
mov byte [esp + eax + 0x258], 0
add eax, 1
cmp eax, 5
jne 0x40ec47
xor esi, esi
cmp esi, 5
jae 0x40ecb7
movzx eax, byte [esp + esi + 0x258]
mov ecx, esi
add ecx, 0x6c7f0570
mov ebx, eax
and ebx, 0x7e
mov edx, 0x1380fa8f
sub edx, esi
and edx, 0xbf5a6881
and ecx, 0x40a5977e
mov edi, eax
xor edi, 0x7e
or eax, 0x40a5977e
xor ebx, eax
or edi, ebx
or edx, ecx
xor edi, edx
mov eax, 0x6184e4ce
sub eax, edi
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
mov byte [esp + esi + 0x258], al
add esi, 1
jmp 0x40ec59
lea eax, [esp + 0x258]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00401900
fnstcw word [esp + 0x5a]
movzx eax, word [esp + 0x5a]
or eax, 0xc00
mov word [esp + 0x21a], ax
fldcw word [esp + 0x21a]
fistp dword [esp + 0x3a4]
fldcw word [esp + 0x5a]
mov eax, dword [esp + 0x3a4]
mov dword [esp + 0x380], eax
mov al, byte [esp + 0x10c]
mov byte [esp + 0x188], al
mov byte [esp + 0x34], 0x36
mov byte [esp + 0x35], 0x3f
mov byte [esp + 0x36], 0x8a
mov eax, 3
mov byte [esp + eax + 0x34], 0
add eax, 1
cmp eax, 4
jne 0x40ed26
xor eax, eax
cmp eax, 4
jae 0x40ed82
movzx edx, byte [esp + eax + 0x34]
mov edi, eax
and edi, 0xf92ecddd
xor edi, 0xf92ecddd
mov ecx, eax
and ecx, 0x6d13222
sub ecx, edi
xor ecx, edx
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, 0x50
add edx, ecx
mov byte [esp + eax + 0x34], dl
mov ecx, eax
add ecx, 5
mov edx, 2
sub edx, eax
and edx, 4
and ecx, 0xb
sub ecx, edx
mov eax, ecx
jmp 0x40ed35
lea eax, [esp + 0x34]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004019d0
cmp eax, 0
setg byte [esp + 0x2f]
mov eax, dword [esp + 0x294]
mov dword [esp], eax
call fcn.00412d20
mov ebx, eax
and ebx, 1
mov dword [esp + 0x26c], eax
or eax, 1
add ebx, eax
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40edd6
mov ecx, eax
mov dword [esp], ecx
call fcn.004081b0
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x294]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a8c0
xor eax, eax
lea eax, [esp + 0x108]
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 [0x4490f0]
sub esp, 0x18
mov eax, dword [esp + 0x108]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40ee5a
mov ecx, eax
mov dword [esp], ecx
call fcn.004081b0
mov ebx, dword [0x4490f0]
mov ecx, dword [esp + 0x108]
xor edx, edx
lea esi, [esp + 0x108]
mov dword [esp], 0
mov dword [esp + 4], edi
mov edx, dword [esp + 0x26c]
mov dword [esp + 8], edx
mov dword [esp + 0x27c], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], esi
call ebx
sub esp, 0x18
mov ebx, dword [esp + 0x388]
mov dword [esp], edi
call fcn.004081c0
mov dword [esp], ebx
call fcn.00412d20
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40eeda
mov ecx, eax
mov dword [esp], ecx
call fcn.004081b0
xor ecx, ecx
mov dword [esp + 0x270], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040a8c0
lea ecx, [esp + 0x570]
mov dword [esp], 1
call fcn.00408df0
sub esp, 4
xor ebx, ebx
mov edi, dword [esp + 0x78]
mov dword [esp], edi
call fcn.00401b90
cmp ebx, eax
jb 0x40ef34
mov edi, dword [esp + 0x28]
jmp 0x40f017
mov dword [esp], edi
mov dword [esp + 4], ebx
call fcn.00401b70
mov dword [esp], eax
call fcn.004018e0
mov edi, eax
cmp edi, 0
jne 0x40ef58
mov edi, dword [esp + 0x78]
jmp 0x40f007
mov dword [esp], edi
call fcn.00412d20
sub eax, 0xffffffff
mov ecx, 2
mov dword [esp + 0x358], eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40ef80
mov ecx, eax
mov dword [esp], ecx
call fcn.004081b0
mov esi, eax
xor eax, eax
mov dword [esp], esi
mov eax, dword [esp + 0x358]
mov dword [esp + 4], eax
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040a8c0
mov eax, dword [esp + 0x38c]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x380]
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 + 0x570]
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.0041d440
mov dword [esp], esi
call fcn.004081c0
mov edi, dword [esp + 0x78]
jmp 0x40f007
xor eax, eax
sub eax, ebx
add eax, 0xffffffff
xor ebx, ebx
sub ebx, eax
jmp 0x40ef1f
mov eax, dword [esp + 0x270]
mov dword [esp], eax
call fcn.004081c0
jmp 0x40f028
mov eax, dword [esp + 0x27c]
mov dword [esp], eax
call fcn.004081c0
lea ecx, [esp + 0x570]
call fcn.004097d0
lea ecx, [esp + 0x570]
call fcn.00408ed0
jmp 0x410e63
mov al, byte [esp + 0x104]
mov byte [esp + 0x18c], al
mov byte [esp + 0x310], 0x7f
mov byte [esp + 0x311], 0x11
mov eax, 2
mov byte [esp + eax + 0x310], 0
add eax, 1
cmp eax, 8
jne 0x40f077
xor eax, eax
cmp eax, 8
jae 0x40f0f0
mov dl, byte [esp + eax + 0x310]
movzx edi, dl
mov ecx, eax
add ecx, 0x59d9a184
mov ebx, ecx
xor ebx, edi
mov edi, 0xa6265e7b
sub edi, eax
or edi, ebx
mov ebx, edi
xor ebx, 0xffffffff
mov esi, ebx
and esi, 0xfd
and edi, 2
imul edi, esi
mov esi, ebx
and esi, 2
or ebx, 2
imul ebx, esi
add ebx, edi
sub ecx, ebx
add cl, dl
add cl, 0x6c
mov byte [esp + eax + 0x310], cl
mov ecx, eax
xor ecx, 0xfffffffe
mov edx, eax
or edx, 1
and edx, ecx
shl edx, 1
xor eax, 1
add eax, edx
jmp 0x40f089
lea eax, [esp + 0x310]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401b30
cmp eax, 0
setne al
mov edi, dword [esp + 0x28]
test al, 1
jne 0x40f122
jmp 0x40f45c
mov al, byte [esp + 0x100]
mov byte [esp + 0x190], al
mov byte [esp + 0x308], 0xf0
mov byte [esp + 0x309], 1
mov eax, 2
mov byte [esp + eax + 0x308], 0
add eax, 1
cmp eax, 7
jne 0x40f145
xor eax, eax
cmp eax, 7
jae 0x40f191
movzx edx, byte [esp + eax + 0x308]
mov ecx, 0xbf
sub ecx, eax
mov esi, 0xbf
sub esi, eax
and ecx, esi
mov ebx, eax
add ebx, 0x40
or ebx, edx
xor edx, 0xffffffff
or ecx, edx
and ebx, ecx
add bl, 0xc0
mov byte [esp + eax + 0x308], bl
add eax, 1
jmp 0x40f157
jmp 0x40f193
lea eax, [esp + 0x308]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401b30
jmp 0x40f1b4
cmp eax, 0
je 0x40f45c
mov al, byte [esp + 0xfc]
mov byte [esp + 0x194], al
mov byte [esp + 0x300], 0x93
mov byte [esp + 0x301], 0x27
mov eax, 2
mov byte [esp + eax + 0x300], 0
add eax, 1
cmp eax, 6
jne 0x40f1e0
xor eax, eax
cmp eax, 6
jae 0x40f237
movzx edx, byte [esp + eax + 0x300]
mov ecx, eax
add ecx, 0xe9788ec9
or ecx, edx
mov esi, eax
add esi, 0xc9
and esi, edx
sub ecx, esi
mov edx, ecx
and edx, 0xeb
xor edx, 0xeb
and ecx, 0x14
sub ecx, edx
add cl, 0xfe
mov byte [esp + eax + 0x300], cl
add eax, 1
jmp 0x40f1f2
lea eax, [esp + 0x300]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 5
call fcn.00401b30
cmp eax, 0
je 0x40f45c
mov al, byte [esp + 0xf8]
mov byte [esp + 0x198], al
mov byte [esp + 0x2f8], 0xfe
mov byte [esp + 0x2f9], 7
mov eax, 2
mov byte [esp + eax + 0x2f8], 0
add eax, 1
cmp eax, 6
jne 0x40f282
xor eax, eax
cmp eax, 6
jae 0x40f2c4
mov dl, byte [esp + eax + 0x2f8]
movzx esi, dl
mov ecx, eax
add ecx, 0x5eae10c1
mov edi, ecx
and edi, esi
shl edi, 1
sub ecx, edi
add cl, dl
add cl, 0x3b
mov byte [esp + eax + 0x2f8], cl
add eax, 1
jmp 0x40f294
lea eax, [esp + 0x2f8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401b30
cmp eax, 0
mov edi, dword [esp + 0x28]
je 0x40f45c
mov al, byte [esp + 0xf4]
mov byte [esp + 0x19c], al
mov byte [esp + 0x44], 0x44
mov byte [esp + 0x45], 0x21
mov eax, 2
mov byte [esp + eax + 0x44], 0
add eax, 1
cmp eax, 4
jne 0x40f30d
xor eax, eax
cmp eax, 4
jae 0x40f37b
movzx ecx, byte [esp + eax + 0x44]
mov esi, eax
shl esi, 1
and esi, 0x12ea2b70
mov edx, eax
xor edx, 0x97515b8
add edx, esi
mov esi, edx
and esi, ecx
shl esi, 1
sub edx, esi
add edx, ecx
mov esi, edx
add esi, 0xd0b69367
mov ecx, esi
and ecx, 1
mov edi, 0x2f496c98
sub edi, edx
mov edx, edi
and edx, 0x36
and esi, 0xc9
or edx, esi
xor edx, 0x37
and edi, 1
xor edi, 1
or edx, edi
add edx, ecx
mov byte [esp + eax + 0x44], dl
add eax, 1
jmp 0x40f31c
lea eax, [esp + 0x44]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401b30
cmp eax, 0
mov edi, dword [esp + 0x28]
je 0x40f45c
mov al, byte [esp + 0xf0]
mov byte [esp + 0x1a0], al
mov byte [esp + 0x250], 0x9e
mov byte [esp + 0x251], 0x6e
mov byte [esp + 0x252], 0xfa
mov eax, 3
mov byte [esp + eax + 0x250], 0
add eax, 1
cmp eax, 7
jne 0x40f3cf
xor eax, eax
cmp eax, 7
jae 0x40f427
movzx ecx, byte [esp + eax + 0x250]
mov esi, eax
add esi, 0xb917c97f
mov edi, esi
and edi, ecx
shl edi, 1
mov edx, edi
xor edx, esi
mov esi, 0x46e83680
sub esi, eax
and edi, esi
shl edi, 1
add edx, ecx
sub edx, edi
add dl, 0x85
mov byte [esp + eax + 0x250], dl
xor eax, 7
mov ecx, 8
sub ecx, eax
mov eax, ecx
jmp 0x40f3e1
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.00401b30
cmp eax, 0
setne al
xor al, 0xff
test al, 1
mov edi, dword [esp + 0x28]
jne 0x410e63
jmp 0x40f461
jmp 0x410e63
mov al, byte [esp + 0xec]
mov byte [esp + 0x1a4], al
mov byte [esp + 0x2f0], 0xb5
mov byte [esp + 0x2f1], 0x1b
mov eax, 2
mov byte [esp + eax + 0x2f0], 0
add eax, 1
cmp eax, 8
jne 0x40f484
xor eax, eax
cmp eax, 8
jae 0x40f4c8
mov dl, byte [esp + eax + 0x2f0]
mov esi, eax
and esi, 0x85
xor esi, 0x85
mov ecx, eax
and ecx, 0x7a
sub ecx, esi
xor cl, dl
add cl, 0x99
mov byte [esp + eax + 0x2f0], cl
add eax, 1
jmp 0x40f496
lea eax, [esp + 0x2f0]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov dword [esp + 0x288], eax
mov al, byte [esp + 0xe8]
mov byte [esp + 0x1a8], al
mov byte [esp + 0x2e8], 0x74
mov byte [esp + 0x2e9], 0xdb
mov eax, 2
mov byte [esp + eax + 0x2e8], 0
add eax, 1
cmp eax, 6
jne 0x40f509
xor eax, eax
cmp eax, 6
jae 0x40f54d
movzx edx, byte [esp + eax + 0x2e8]
mov ecx, 0xd0
sub ecx, eax
or ecx, edx
xor edx, 0xffffffff
mov esi, eax
add esi, 0x2f
or esi, edx
and ecx, esi
mov dl, 0x14
sub dl, cl
mov byte [esp + eax + 0x2e8], dl
add eax, 1
jmp 0x40f51b
lea eax, [esp + 0x2e8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov cl, byte [esp + 0xe4]
mov byte [esp + 0x1ac], cl
mov byte [esp + 0x2e0], 0xf3
mov byte [esp + 0x2e1], 0x67
mov ecx, 2
mov byte [esp + ecx + 0x2e0], 0
add ecx, 1
cmp ecx, 5
jne 0x40f587
mov dword [esp + 0x390], eax
xor eax, eax
cmp eax, 5
jae 0x40f5f1
movzx edx, byte [esp + eax + 0x2e0]
mov ecx, eax
add ecx, 0x70883219
xor ecx, edx
mov esi, ecx
add esi, 0xcd570583
mov edx, 0x32a8fa7d
sub edx, ecx
or edx, 1
add edx, esi
mov esi, ecx
and esi, 1
xor ecx, 1
add ecx, 0xcd570582
or ecx, esi
mov esi, ecx
and esi, edx
shl esi, 1
xor ecx, edx
add ecx, esi
mov byte [esp + eax + 0x2e0], cl
add eax, 1
jmp 0x40f5a0
lea eax, [esp + 0x2e0]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401970
mov cl, byte [esp + 0xe0]
mov byte [esp + 0x1b0], cl
mov byte [esp + 0x2d8], 0xe6
mov byte [esp + 0x2d9], 0x99
mov ecx, 2
mov byte [esp + ecx + 0x2d8], 0
add ecx, 1
cmp ecx, 5
jne 0x40f62b
mov dword [esp + 0x2a4], eax
xor eax, eax
cmp eax, 5
jae 0x40f698
movzx ecx, byte [esp + eax + 0x2d8]
mov esi, eax
add esi, 0x1f499f9a
xor esi, ecx
mov ebx, esi
add ebx, 0x638fe1fd
mov ecx, ebx
and ecx, 1
mov edx, 0x9c701e02
sub edx, esi
mov edi, edx
and edi, 0x86
and ebx, 0x79
or edi, ebx
xor edi, 0x87
and edx, 1
xor edx, 1
or edi, edx
add ecx, edi
mov byte [esp + eax + 0x2d8], cl
add eax, 1
jmp 0x40f644
lea eax, [esp + 0x2d8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov cl, byte [esp + 0xdc]
mov byte [esp + 0x1b4], cl
mov byte [esp + 0x2d0], 0xa4
mov byte [esp + 0x2d1], 0xc9
mov ecx, 2
mov byte [esp + ecx + 0x2d0], 0
add ecx, 1
cmp ecx, 6
jne 0x40f6d2
mov dword [esp + 0x398], eax
xor eax, eax
cmp eax, 6
jae 0x40f777
movzx edx, byte [esp + eax + 0x2d0]
mov ecx, 0xff186931
sub ecx, eax
mov esi, ecx
xor esi, 0xe7efb752
or ecx, 0x181048ad
and ecx, esi
mov esi, eax
add esi, 0xe796cf
mov edi, 0x1f186931
sub edi, eax
or edi, 0xe7efb752
add edi, esi
or ecx, edi
mov esi, edx
xor esi, 0x52
mov edi, edx
xor edi, 0xe7efb752
or esi, edi
mov edi, ecx
and edi, esi
xor edx, 0xe7efb752
or ecx, edx
xor ecx, 0xffffffff
or edi, ecx
mov edx, edi
shl edx, 1
and edx, 0xf2
xor edi, 0xfb7a0df9
mov ecx, edi
add ecx, edx
and edi, 1
or ecx, 1
add ecx, edi
mov byte [esp + eax + 0x2d0], cl
add eax, 1
jmp 0x40f6eb
lea eax, [esp + 0x2d0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00401900
fnstcw word [esp + 0x58]
movzx eax, word [esp + 0x58]
or eax, 0xc00
mov word [esp + 0x218], ax
fldcw word [esp + 0x218]
fistp dword [esp + 0x3b0]
fldcw word [esp + 0x58]
mov esi, dword [esp + 0x3b0]
mov al, byte [esp + 0xd8]
mov byte [esp + 0x1b8], al
mov byte [esp + 0x248], 0x3e
mov byte [esp + 0x249], 2
mov byte [esp + 0x24a], 0x92
mov eax, 3
mov byte [esp + eax + 0x248], 0
add eax, 1
cmp eax, 7
jne 0x40f7e8
xor eax, eax
cmp eax, 7
jae 0x40f81c
mov cl, byte [esp + eax + 0x248]
mov dl, al
add dl, 0x64
xor dl, cl
add dl, 0xc
mov byte [esp + eax + 0x248], dl
add eax, 1
jmp 0x40f7fa
lea eax, [esp + 0x248]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00401900
fnstcw word [esp + 0x56]
movzx eax, word [esp + 0x56]
or eax, 0xc00
mov word [esp + 0x216], ax
fldcw word [esp + 0x216]
fistp dword [esp + 0x3ac]
fldcw word [esp + 0x56]
mov eax, dword [esp + 0x3ac]
mov dword [esp + 0x394], eax
mov eax, dword [esp + 0x288]
mov dword [esp], eax
call fcn.00412d20
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f895
mov ecx, eax
mov dword [esp], ecx
call fcn.004081b0
mov ebx, eax
xor eax, eax
mov dword [esp], ebx
mov dword [esp + 4], edi
mov eax, dword [esp + 0x288]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a8c0
lea ecx, [esp + 0x3c8]
mov dword [esp], ebx
call fcn.00412d90
sub esp, 4
mov dword [esp], ebx
call fcn.004081c0
mov edi, dword [esp + 0x28]
lea ecx, [esp + 0x3c8]
mov dword [esp], 0x1000
call fcn.00436340
sub esp, 4
cmp eax, 0
setge al
test al, 1
jne 0x40f905
jmp 0x40f900
jmp 0x40ffe0
mov dword [esp + 0xd4], 0
mov eax, dword [esp + 0x3c8]
mov dword [esp + 0x374], eax
mov al, byte [esp + 0x1bc]
mov byte [esp + 0x214], al
mov byte [esp + 0x1c0], 0x3b
mov byte [esp + 0x1c1], 0x3a
mov byte [esp + 0x1c2], 0x3d
mov byte [esp + 0x1c3], 0x3c
mov eax, 4
mov byte [esp + eax + 0x1c0], 0
add eax, 1
cmp eax, 8
jne 0x40f951
mov dword [esp + 0x39c], esi
xor eax, eax
cmp eax, 8
jae 0x40f9b9
movzx edi, byte [esp + eax + 0x1c0]
mov edx, eax
add edx, 0x1cc191ca
mov ecx, 0x35
sub ecx, eax
and ecx, 0x2f
mov esi, edx
and esi, 0xd0
or ecx, esi
xor ecx, 0xd0
or ecx, edi
shl edx, 1
xor edi, 0xffffffff
sub edx, eax
add edx, 0x36
or edx, edi
and ecx, edx
mov dl, 0xd
sub dl, cl
mov byte [esp + eax + 0x1c0], dl
add eax, 1
jmp 0x40f96a
mov esi, dword [esp + 0x1c0]
xor ebx, ebx
mov ecx, 2
cmp ebx, dword [0x4490f4]
jb 0x40f9d4
jmp 0x40fa5f
mov ecx, dword [0x4490f8]
cmp dword [ecx + ebx*8], 0xae6e2b0b
sete dl
mov byte [esp + 0x2d], dl
test dl, 1
jne 0x40f9ef
jmp 0x40fa4c
mov edx, dword [ecx + ebx*8 + 4]
mov ecx, 2
cmp edx, esi
je 0x40fa4e
mov eax, dword [0x4490fc]
xor ecx, ecx
lea ecx, [esp + 0xd4]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esp + 0x374]
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.00438910
mov ecx, 1
jmp 0x40fa4e
xor ecx, ecx
test byte [esp + 0x2d], 1
je 0x40fa57
jmp 0x40fa5f
add ebx, 1
jmp 0x40f9c2
cmp ecx, 2
je 0x40fa66
mov esi, eax
mov al, byte [esp + 0xc8]
mov byte [esp + 0x1c8], al
mov byte [esp + 0xcc], 0x20
mov byte [esp + 0xcd], 0x2b
mov byte [esp + 0xce], 0x2a
mov byte [esp + 0xcf], 0xe9
mov eax, 4
mov byte [esp + eax + 0xcc], 0
add eax, 1
cmp eax, 6
jne 0x40fa99
xor edi, edi
cmp edi, 6
jae 0x40fb09
movzx eax, byte [esp + edi + 0xcc]
mov edx, edi
add edx, 0x37
and edx, eax
mov ecx, 0xb56396c8
sub ecx, edi
xor eax, 0xffffffff
and ecx, eax
xor edx, 0xffffffff
mov eax, ecx
shl eax, 1
xor eax, 0xffffffff
add ecx, eax
and ecx, edx
mov ebx, ecx
add ebx, 0xc
mov edx, ecx
shl edx, 1
and edx, 2
mov eax, 0x13
sub eax, ecx
and eax, 0xf1
and ebx, 0xe
or eax, ebx
xor eax, 0xf0
add eax, edx
mov byte [esp + edi + 0xcc], al
add edi, 1
jmp 0x40faab
cmp esi, dword [esp + 0xcc]
sete al
test al, 1
mov edi, dword [esp + 0x28]
jne 0x40fb20
jmp 0x40ffe0
mov eax, dword [esp + 0xd4]
add eax, 2
mov dword [esp], eax
call fcn.00435f50
mov dword [esp + 0x74], eax
mov edi, dword [esp + 0xd4]
add edi, 0x66379fd0
add edi, 2
sub edi, 0x66379fd0
mov eax, dword [esp + 0x3c8]
mov dword [esp + 0x370], eax
mov al, byte [esp + 0x1cc]
mov byte [esp + 0x210], al
mov byte [esp + 0x1d0], 0x3b
mov byte [esp + 0x1d1], 0x3a
mov byte [esp + 0x1d2], 0x3d
mov byte [esp + 0x1d3], 0x3c
mov eax, 4
mov byte [esp + eax + 0x1d0], 0
add eax, 1
cmp eax, 8
jne 0x40fb8d
xor eax, eax
cmp eax, 8
jae 0x40fbee
movzx ebx, byte [esp + eax + 0x1d0]
mov edx, eax
add edx, 0x1cc191ca
mov ecx, 0x35
sub ecx, eax
and ecx, 0x2f
mov esi, edx
and esi, 0xd0
or ecx, esi
xor ecx, 0xd0
or ecx, ebx
shl edx, 1
xor ebx, 0xffffffff
sub edx, eax
add edx, 0x36
or edx, ebx
and ecx, edx
mov dl, 0xd
sub dl, cl
mov byte [esp + eax + 0x1d0], dl
add eax, 1
jmp 0x40fb9f
mov edx, dword [esp + 0x1d0]
xor esi, esi
cmp esi, dword [0x4490f4]
jb 0x40fc0d
mov ecx, 2
mov edi, dword [esp + 0x28]
jmp 0x40fca1
mov dword [esp + 0x68], edx
mov edx, dword [0x4490f8]
cmp dword [edx + esi*8], 0xae6e2b0b
sete bl
xor ecx, ecx
mov byte [esp + 0x2c], bl
test bl, 1
jne 0x40fc2e
jmp 0x40fc84
mov edx, dword [edx + esi*8 + 4]
mov ecx, 2
cmp edx, dword [esp + 0x68]
je 0x40fc84
mov eax, dword [0x4490fc]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esp + 0x370]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov eax, dword [esp + 0x74]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], 0
call fcn.00438910
mov ecx, 1
test byte [esp + 0x2c], 1
jne 0x40fc97
add esi, 1
mov edx, dword [esp + 0x68]
jmp 0x40fbf7
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x68]
jmp 0x40fca1
cmp ecx, 2
je 0x40fca8
mov edx, eax
cmp edx, 0
jl 0x40ffd2
mov esi, dword [esp + 0x390]
mov dword [esp], esi
call fcn.00412d20
mov ebx, eax
mov dword [esp + 0x364], ebx
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40fce4
mov ecx, eax
mov dword [esp], ecx
call fcn.004081b0
xor ecx, ecx
mov dword [esp + 0x368], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040a8c0
mov ecx, dword [esp + 0x74]
mov edi, ecx
add edi, 4
mov eax, dword [ecx + 4]
movzx ecx, word [ecx]
shr ecx, 1
sub ecx, 1
shl ecx, 1
add eax, ecx
mov ebx, eax
cmp ebx, dword [edi]
jb 0x40fd3a
movzx ecx, word [ebx]
cmp ecx, 0x5c
jne 0x40fd35
jmp 0x40fd3e
add ebx, 0xfffffffe
jmp 0x40fd27
mov ebx, eax
jmp 0x40fd3e
mov eax, dword [edi]
mov ecx, ebx
xor ecx, 0xffffffff
and ecx, eax
xor eax, 0xffffffff
and ebx, eax
sub ebx, ecx
sar ebx, 1
mov eax, ebx
mov edx, dword [esp + 0x364]
and eax, edx
mov ecx, ebx
or ecx, edx
add ecx, eax
xor edx, edx
sub edx, ecx
add edx, 0xffffffff
xor eax, eax
sub eax, edx
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40fd82
mov ecx, eax
mov dword [esp], ecx
call fcn.004081b0
mov ecx, dword [edi]
mov dword [esp + 0x268], eax
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
call fcn.00412dc0
mov dword [esp], eax
mov esi, dword [esp + 0x368]
mov dword [esp + 4], esi
call fcn.00409c90
mov edi, eax
mov dword [esp], esi
call fcn.004081c0
xor eax, eax
sub eax, dword [esp + 0x268]
add edi, eax
sar edi, 1
sub edi, 0xe2d3bdf6
add edi, 1
add edi, 0xe2d3bdf6
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40fdf4
mov ecx, eax
mov dword [esp], ecx
call fcn.004081b0
mov esi, dword [esp + 0x268]
mov dword [esp], esi
mov dword [esp + 0x278], eax
mov dword [esp + 4], eax
call fcn.004344a0
mov dword [esp], esi
call fcn.004081c0
mov esi, dword [esp + 0x398]
mov dword [esp], esi
call fcn.00412d20
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40fe4a
mov ecx, eax
mov dword [esp], ecx
call fcn.004081b0
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.0040a8c0
lea ecx, [esp + 0x4e8]
mov dword [esp], 1
call fcn.00408df0
sub esp, 4
xor ebx, ebx
mov esi, dword [esp + 0x2a4]
mov dword [esp], esi
call fcn.00401b90
cmp ebx, eax
jb 0x40fea3
jmp 0x40ff94
mov dword [esp], esi
mov dword [esp + 4], ebx
call fcn.00401b70
mov dword [esp], eax
call fcn.004018e0
mov dword [esp + 0x64], eax
cmp dword [esp + 0x64], 0
sete al
jmp 0x40fec5
test al, 1
jne 0x40fecb
jmp 0x40fed0
jmp 0x40ff7d
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call fcn.00412d20
mov edi, eax
mov eax, edi
and eax, 1
or edi, 1
add edi, eax
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40ff00
mov ecx, eax
mov dword [esp], ecx
call fcn.004081b0
mov esi, eax
xor eax, eax
mov dword [esp], esi
mov dword [esp + 4], edi
mov eax, dword [esp + 0x64]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a8c0
lea eax, [esp + 0x4e8]
xor ecx, ecx
mov dword [esp], eax
mov eax, dword [esp + 0x274]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x278]
mov dword [esp + 8], eax
mov edi, esi
mov dword [esp + 0xc], esi
mov eax, dword [esp + 0x394]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x39c]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
call fcn.0041d440
mov dword [esp], edi
call fcn.004081c0
jmp 0x40ff7d
xor eax, eax
sub eax, ebx
add eax, 0xffffffff
xor ebx, ebx
sub ebx, eax
mov esi, dword [esp + 0x2a4]
jmp 0x40fe92
mov eax, dword [esp + 0x274]
mov dword [esp], eax
call fcn.004081c0
jmp 0x40ffa5
mov eax, dword [esp + 0x278]
mov dword [esp], eax
call fcn.004081c0
lea ecx, [esp + 0x4e8]
call fcn.004097d0
lea ecx, [esp + 0x4e8]
call fcn.00408ed0
mov edi, dword [esp + 0x28]
jmp 0x40ffd2
mov eax, dword [esp + 0x74]
mov dword [esp], eax
call fcn.00435fb0
jmp 0x40ffe0
lea ecx, [esp + 0x3c8]
call fcn.00412e30
jmp 0x410e63
mov al, byte [esp + 0xc4]
mov byte [esp + 0x1d8], al
mov byte [esp + 0x2c8], 0x50
mov byte [esp + 0x2c9], 0xc1
mov eax, 2
mov byte [esp + eax + 0x2c8], 0
add eax, 1
cmp eax, 7
jne 0x410014
xor eax, eax
cmp eax, 7
jae 0x41005e
movzx edx, byte [esp + eax + 0x2c8]
mov ecx, eax
add ecx, 0xe828d1b0
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x1e
mov esi, ecx
shl esi, 1
and esi, 0x1e
add ecx, edx
sub ecx, esi
add cl, 0x90
mov byte [esp + eax + 0x2c8], cl
add eax, 1
jmp 0x410026
lea eax, [esp + 0x2c8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov esi, eax
mov al, byte [esp + 0xc0]
mov byte [esp + 0x1dc], al
mov byte [esp + 0x2c0], 6
mov byte [esp + 0x2c1], 0x89
mov eax, 2
mov byte [esp + eax + 0x2c0], 0
add eax, 1
cmp eax, 5
jne 0x41009a
xor eax, eax
cmp eax, 5
jae 0x41010d
movzx edx, byte [esp + eax + 0x2c0]
mov ecx, eax
add ecx, 1
mov dword [esp + 0x36c], esi
mov esi, eax
xor esi, 0xffffffff
or esi, 0x876e6aa2
add ecx, esi
mov esi, eax
or esi, 0x876e6aa2
add ecx, esi
mov ebx, ecx
and ebx, edx
mov esi, edx
xor esi, 0xffffffff
mov edi, ecx
and edi, esi
mov esi, ecx
xor esi, edx
add ecx, esi
mov esi, dword [esp + 0x36c]
xor ecx, 0xffffffff
add edi, ecx
or ebx, edi
mov cl, 0xd5
sub cl, bl
mov byte [esp + eax + 0x2c0], cl
add eax, 1
jmp 0x4100ac
lea eax, [esp + 0x2c0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004018a0
mov edi, eax
test esi, esi
sete al
test edi, edi
sete cl
or al, cl
test al, 1
jne 0x410138
jmp 0x410141
mov edi, dword [esp + 0x28]
jmp 0x410917
mov dword [esp], esi
call fcn.00412d20
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 0x41016c
mov ecx, eax
mov dword [esp], ecx
call fcn.004081b0
xor ecx, ecx
mov dword [esp + 0x2a0], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040a8c0
mov dword [esp], edi
call fcn.00412d20
mov ebx, eax
and ebx, 1
or eax, 1
add ebx, eax
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4101bf
mov ecx, eax
mov dword [esp], ecx
call fcn.004081b0
xor ecx, ecx
mov dword [esp + 0x29c], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040a8c0
mov al, byte [esp + 0xbc]
mov byte [esp + 0x1e0], al
mov byte [esp + 0x2b8], 0xd6
mov byte [esp + 0x2b9], 0x4b
mov eax, 2
mov byte [esp + eax + 0x2b8], 0
add eax, 1
cmp eax, 6
jne 0x41020b
xor eax, eax
cmp eax, 6
jae 0x410268
movzx edx, byte [esp + eax + 0x2b8]
mov esi, eax
shl esi, 1
and esi, 0xfff455e6
mov ecx, eax
xor ecx, 0xfffa2af3
add ecx, esi
xor ecx, edx
mov esi, ecx
and esi, 1
mov edx, 1
sub edx, ecx
and edx, 1
xor edx, 1
or edx, esi
or ecx, 1
add ecx, 0x40
add edx, ecx
mov byte [esp + eax + 0x2b8], dl
add eax, 1
jmp 0x41021d
lea eax, [esp + 0x2b8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov edi, eax
mov dword [esp + 0x7c], 0
cmp edi, 0
je 0x4102d9
mov dword [esp], edi
call fcn.00412d20
mov ebx, eax
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4102b3
mov ecx, eax
mov dword [esp], ecx
call fcn.004081b0
xor ecx, ecx
mov dword [esp + 0x7c], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040a8c0
mov al, byte [esp + 0xb8]
mov byte [esp + 0x1e4], al
mov byte [esp + 0x40], 0xb6
mov byte [esp + 0x41], 0x2b
mov eax, 2
mov byte [esp + eax + 0x40], 0
add eax, 1
cmp eax, 4
jne 0x4102f6
xor eax, eax
cmp eax, 4
jae 0x410349
movzx edx, byte [esp + eax + 0x40]
mov ecx, 0xc8
sub ecx, eax
mov esi, 0xc8
sub esi, eax
and ecx, esi
mov esi, edx
xor esi, 0xffffffff
mov edi, 0x95b26fc8
sub edi, eax
and edi, esi
mov esi, edi
shl esi, 1
xor esi, 0xffffffff
add edi, esi
xor edx, 0xffffffff
or ecx, edx
and ecx, edi
add cl, 0xed
mov byte [esp + eax + 0x40], cl
add eax, 1
jmp 0x410305
lea eax, [esp + 0x40]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov edi, eax
xor esi, esi
cmp edi, 0
je 0x4103af
mov dword [esp], edi
call fcn.00412d20
mov ebx, eax
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41038b
mov ecx, eax
mov dword [esp], ecx
call fcn.004081b0
mov esi, eax
xor eax, eax
mov dword [esp], esi
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040a8c0
mov al, byte [esp + 0xb4]
mov byte [esp + 0x1e8], al
mov byte [esp + 0x240], 0x65
mov byte [esp + 0x241], 0x79
mov byte [esp + 0x242], 2
mov eax, 3
mov ebx, dword [ebp + 8]
mov byte [esp + eax + 0x240], 0
add eax, 1
cmp eax, 5
jne 0x4103dd
xor eax, eax
mov edi, dword [esp + 0x28]
cmp eax, 5
jae 0x41040f
mov cl, byte [esp + eax + 0x240]
mov dl, al
xor dl, cl
mov byte [esp + eax + 0x240], dl
add eax, 1
jmp 0x4103f3
mov dword [esp + 0x298], esi
lea eax, [esp + 0x240]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401970
xor ebx, ebx
mov dword [esp + 0x290], eax
cmp eax, 0
mov esi, 0
je 0x41080a
mov eax, dword [esp + 0x290]
mov dword [esp], eax
call fcn.00401b90
mov ecx, 0xc
mov dword [esp + 0x70], eax
mul ecx
seto ch
add eax, 4
setb cl
mov dl, ch
xor dl, 0xff
mov dh, cl
xor dh, 0xff
and dl, dh
xor cl, 0xff
xor ch, 0xff
and cl, ch
xor cl, 0xff
xor dl, 0xff
and cl, dl
jmp 0x410481
mov edx, 0xffffffff
test cl, 1
jne 0x41048d
mov edx, eax
mov dword [esp], edx
call fcn.004081b0
mov esi, eax
mov ebx, dword [esp + 0x70]
mov dword [esi], ebx
jmp 0x41049f
add esi, 4
jmp 0x4104a4
cmp ebx, 0
je 0x4104d1
imul eax, ebx, 0xc
mov ebx, esi
add ebx, eax
mov edi, esi
mov ecx, edi
call fcn.00412e40
add edi, 0xc
cmp edi, ebx
sete al
test al, 1
jne 0x4104c7
jmp 0x4104b2
mov edi, dword [esp + 0x28]
mov ebx, dword [esp + 0x70]
jmp 0x4104d1
xor edx, edx
jmp 0x4104d5
cmp edx, ebx
jb 0x4104de
jmp 0x41080a
mov eax, dword [esp + 0x290]
mov dword [esp], eax
mov dword [esp + 0x384], edx
mov dword [esp + 4], edx
call fcn.00401ba0
mov dword [esp + 0x60], eax
mov al, byte [esp + 0xb0]
mov byte [esp + 0x1ec], al
mov byte [esp + 0x30], 0xb7
mov byte [esp + 0x31], 0xa9
mov byte [esp + 0x32], 0x1a
mov eax, 3
mov byte [esp + eax + 0x30], 0
add eax, 1
cmp eax, 4
jne 0x41051e
mov dword [esp + 0x6c], esi
xor edi, edi
cmp edi, 4
jae 0x41059e
movzx ecx, byte [esp + edi + 0x30]
mov edx, edi
xor edx, 0xb2e8ad05
mov eax, edi
shl eax, 1
and eax, 0x9a2ea5f4
sub eax, edx
mov ebx, eax
and ebx, ecx
mov esi, ebx
and esi, 0xfd
mov edx, ebx
and edx, 2
xor edx, 2
imul edx, esi
mov esi, ebx
and esi, 2
or ebx, 2
imul ebx, esi
add ebx, edx
mov esi, ebx
xor esi, 0xffffffff
mov edx, eax
and edx, esi
xor eax, 0xffffffff
and ebx, eax
sub edx, ebx
add edx, ecx
mov eax, edx
and eax, 0x18
mov ecx, edx
add ecx, eax
or edx, 0xe7
sub ecx, edx
mov byte [esp + edi + 0x30], cl
add edi, 1
jmp 0x410531
lea eax, [esp + 0x30]
mov ecx, dword [esp + 0x60]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov dword [esp + 0x37c], eax
mov al, byte [esp + 0xac]
mov byte [esp + 0x1f0], al
mov byte [esp + 0x238], 0xfd
mov byte [esp + 0x239], 0xe7
mov byte [esp + 0x23a], 0x9e
mov eax, 3
mov byte [esp + eax + 0x238], 0
add eax, 1
cmp eax, 6
jne 0x4105e4
xor eax, eax
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x6c]
cmp eax, 6
jae 0x410654
movzx edx, byte [esp + eax + 0x238]
mov esi, eax
xor esi, 0xe9b8b8e6
mov ecx, eax
shl ecx, 1
and ecx, 0x2c8e8e32
sub ecx, esi
mov esi, dword [esp + 0x6c]
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0xfa
xor ecx, 0x7d
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x238], cl
mov ecx, eax
add ecx, 1
mov edx, eax
xor edx, 0xffffffff
or edx, 1
add edx, ecx
or eax, 1
add eax, edx
jmp 0x4105fe
lea eax, [esp + 0x238]
mov ecx, dword [esp + 0x60]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov dword [esp + 0x378], eax
mov al, byte [esp + 0xa0]
mov byte [esp + 0x1f4], al
mov byte [esp + 0xa4], 0x1c
mov byte [esp + 0xa5], 0x65
mov byte [esp + 0xa6], 0x58
mov byte [esp + 0xa7], 0xb7
mov eax, 4
mov byte [esp + eax + 0xa4], 0
add eax, 1
cmp eax, 8
jne 0x4106a5
xor eax, eax
cmp eax, 8
jae 0x410702
movzx ebx, byte [esp + eax + 0xa4]
mov ecx, 0x21
sub ecx, eax
or ecx, ebx
mov edx, eax
add edx, 0x29ef9ade
mov esi, eax
add esi, 0x29ef9ade
or edx, esi
mov esi, edx
shl esi, 1
xor esi, 0xffffffff
add edx, esi
mov esi, dword [esp + 0x6c]
and edx, ebx
xor ecx, 0xffffffff
or edx, ecx
add dl, 0xaa
mov byte [esp + eax + 0xa4], dl
add eax, 1
jmp 0x4106b7
lea eax, [esp + 0xa4]
mov ecx, dword [esp + 0x60]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004019d0
cmp eax, 0
setg byte [esp + 0x2e]
mov al, byte [esp + 0x94]
mov byte [esp + 0x1f8], al
mov byte [esp + 0x98], 0xa9
mov byte [esp + 0x99], 0xb8
mov byte [esp + 0x9a], 0xab
mov byte [esp + 0x9b], 0x21
mov eax, 4
mov byte [esp + eax + 0x98], 0
add eax, 1
cmp eax, 5
jne 0x410754
xor eax, eax
cmp eax, 5
jae 0x410791
mov cl, byte [esp + eax + 0x98]
mov dl, al
add dl, 0xf9
xor dl, cl
add dl, 0x23
mov byte [esp + eax + 0x98], dl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x410766
lea eax, [esp + 0x98]
mov ecx, dword [esp + 0x60]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004019d0
xor edx, edx
cmp eax, 0
setg dl
mov ebx, esi
mov esi, dword [esp + 0x384]
imul eax, esi, 0xc
mov ecx, ebx
add ecx, eax
mov eax, dword [esp + 0x37c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x378]
mov dword [esp], eax
and edx, 1
mov dword [esp + 0xc], edx
xor eax, eax
mov dl, byte [esp + 0x2e]
mov al, dl
and eax, 1
mov dword [esp + 8], eax
call fcn.00412e60
sub esp, 0x10
mov edx, esi
mov esi, ebx
mov eax, edx
and eax, 1
or edx, 1
add edx, eax
mov ebx, dword [esp + 0x70]
jmp 0x4104d5
mov eax, dword [esp + 0x29c]
mov dword [esp + 0x3b8], eax
mov eax, dword [esp + 0x2a0]
mov dword [esp + 0x3bc], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x3c0], eax
mov eax, dword [esp + 0x298]
mov dword [esp + 0x3c4], eax
lea ecx, [esp + 0x460]
mov dword [esp], 2
call fcn.00408df0
sub esp, 4
lea eax, [esp + 0x460]
lea ecx, [esp + 0x3b8]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], esi
mov dword [esp + 0xc], ebx
call fcn.00413530
lea ecx, [esp + 0x460]
call fcn.004097d0
cmp esi, 0
je 0x4108c2
mov edi, esi
add edi, 0xfffffffc
imul eax, dword [esi - 4], 0xc
mov ebx, esi
add ebx, eax
cmp esi, ebx
je 0x4108b2
jmp 0x41089b
add ebx, 0xfffffff4
mov ecx, ebx
call fcn.00412fc0
cmp ebx, esi
sete al
test al, 1
jne 0x4108b0
jmp 0x41089b
jmp 0x4108b2
mov dword [esp], edi
call fcn.004081c0
mov edi, dword [esp + 0x28]
jmp 0x4108c0
jmp 0x4108c2
jmp 0x4108c4
mov eax, dword [esp + 0x29c]
mov dword [esp], eax
call fcn.004081c0
mov esi, dword [esp + 0x298]
jmp 0x4108dc
mov eax, dword [esp + 0x2a0]
mov dword [esp], eax
call fcn.004081c0
mov eax, dword [esp + 0x7c]
cmp eax, 0
je 0x4108fe
mov dword [esp], eax
call fcn.004081c0
jmp 0x4108fe
cmp esi, 0
je 0x41090b
mov dword [esp], esi
call fcn.004081c0
lea ecx, [esp + 0x460]
call fcn.00408ed0
jmp 0x410e63
mov al, byte [esp + 0x90]
mov byte [esp + 0x1fc], al
mov byte [esp + 0x2b0], 0x3c
mov byte [esp + 0x2b1], 0x8b
mov eax, 2
mov byte [esp + eax + 0x2b0], 0
add eax, 1
cmp eax, 6
jne 0x41093f
xor eax, eax
cmp eax, 6
jae 0x4109a9
movzx edx, byte [esp + eax + 0x2b0]
mov ecx, eax
add ecx, 0x9c5effe3
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, 0xfd
imul ebx, esi
mov esi, edi
and esi, 2
or edi, 2
imul edi, esi
add edi, ebx
add ecx, edx
sub ecx, edi
add cl, 0x91
mov byte [esp + eax + 0x2b0], cl
add eax, 1
jmp 0x410951
lea eax, [esp + 0x2b0]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov esi, eax
mov al, byte [esp + 0x8c]
mov byte [esp + 0x200], al
mov byte [esp + 0x2a8], 0xfa
mov byte [esp + 0x2a9], 0x7b
mov eax, 2
mov byte [esp + eax + 0x2a8], 0
add eax, 1
cmp eax, 6
jne 0x4109e5
xor eax, eax
cmp eax, 6
jae 0x410a43
movzx edx, byte [esp + eax + 0x2a8]
mov edi, esi
mov esi, eax
shl esi, 1
and esi, 0x5710c3d6
mov ecx, eax
xor ecx, 0x2b8861eb
add ecx, esi
mov esi, ecx
and esi, edx
shl esi, 1
sub ecx, esi
mov esi, edi
add ecx, edx
mov edx, ecx
and edx, 0x68
mov ebx, ecx
add ebx, edx
or ecx, 0x97
sub ebx, ecx
mov byte [esp + eax + 0x2a8], bl
add eax, 1
jmp 0x4109f7
lea eax, [esp + 0x2a8]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004018a0
mov edi, eax
test esi, esi
sete al
test edi, edi
sete cl
or al, cl
test al, 1
jne 0x410a6e
jmp 0x410a77
mov edi, dword [esp + 0x28]
jmp 0x410e61
mov dword [esp], esi
call fcn.00412d20
mov ebx, eax
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410a9c
mov ecx, eax
mov dword [esp], ecx
call fcn.004081b0
xor ecx, ecx
mov dword [esp + 0x28c], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040a8c0
mov dword [esp], edi
call fcn.00412d20
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 0x410af3
mov ecx, eax
mov dword [esp], ecx
call fcn.004081b0
xor ecx, ecx
mov dword [esp + 0x284], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040a8c0
mov al, byte [esp + 0x88]
mov byte [esp + 0x204], al
mov byte [esp + 0x230], 5
mov byte [esp + 0x231], 9
mov byte [esp + 0x232], 0x92
mov eax, 3
mov byte [esp + eax + 0x230], 0
add eax, 1
cmp eax, 7
jne 0x410b47
xor eax, eax
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0x28]
cmp eax, 7
jae 0x410b9e
movzx edx, byte [esp + eax + 0x230]
mov esi, eax
add esi, 0xa901e624
mov ecx, eax
add ecx, 0x24
and ecx, edx
or esi, edx
xor ecx, esi
mov edx, ecx
shl edx, 1
and edx, 0x96
xor ecx, 0xb4
sub edx, ecx
mov byte [esp + eax + 0x230], dl
add eax, 1
jmp 0x410b60
lea eax, [esp + 0x230]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401970
xor esi, esi
cmp eax, 0
mov dword [esp + 0x38], 0
je 0x410d97
mov dword [esp + 0x280], eax
mov dword [esp], eax
call fcn.00401b90
mov ecx, 8
mov dword [esp + 0x38], eax
mul ecx
seto dl
add eax, 4
setb cl
or dl, cl
mov ecx, 0xffffffff
test dl, 1
jne 0x410bf5
mov ecx, eax
mov dword [esp], ecx
call fcn.004081b0
mov esi, eax
mov eax, dword [esp + 0x38]
mov dword [esi], eax
add esi, 4
cmp eax, 0
mov dword [esp + 0x3c], esi
je 0x410c30
mov eax, dword [esp + 0x38]
shl eax, 3
mov ebx, esi
add ebx, eax
mov ecx, esi
call fcn.00412ff0
add esi, 8
cmp esi, ebx
jne 0x410c1c
mov esi, dword [esp + 0x3c]
jmp 0x410c30
mov eax, dword [esp + 0x280]
xor edi, edi
jmp 0x410c3b
cmp edi, dword [esp + 0x38]
jb 0x410c4a
mov edi, dword [esp + 0x28]
jmp 0x410d97
mov dword [esp], eax
mov dword [esp + 4], edi
call fcn.00401ba0
mov esi, eax
mov al, byte [esp + 0x84]
mov byte [esp + 0x208], al
mov byte [esp + 0x228], 0x2b
mov byte [esp + 0x229], 0x31
mov byte [esp + 0x22a], 0x86
mov eax, 3
mov byte [esp + eax + 0x228], 0
add eax, 1
cmp eax, 7
jne 0x410c83
xor eax, eax
cmp eax, 7
jae 0x410cd0
movzx edx, byte [esp + eax + 0x228]
mov ecx, eax
add ecx, 0x7ffa8121
xor ecx, edx
add ecx, 0x65a958d2
mov edx, ecx
shl edx, 1
and edx, 0xb4
xor ecx, 0x5a
add ecx, edx
add cl, 0x2f
mov byte [esp + eax + 0x228], cl
add eax, 1
jmp 0x410c95
lea eax, [esp + 0x228]
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.004018a0
mov dword [esp + 0x35c], eax
mov al, byte [esp + 0x80]
mov byte [esp + 0x20c], al
mov byte [esp + 0x220], 0x9d
mov byte [esp + 0x221], 0xa7
mov byte [esp + 0x222], 0x3e
mov eax, 3
mov byte [esp + eax + 0x220], 0
add eax, 1
cmp eax, 6
jne 0x410d15
xor eax, eax
cmp eax, 6
jae 0x410d49
mov cl, byte [esp + eax + 0x220]
mov dl, al
add dl, 0xa
xor dl, cl
add dl, 0xce
mov byte [esp + eax + 0x220], dl
add eax, 1
jmp 0x410d27
lea eax, [esp + 0x220]
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.004018a0
mov edx, edi
shl edx, 3
mov esi, dword [esp + 0x3c]
mov ecx, esi
add ecx, edx
mov dword [esp], eax
mov eax, dword [esp + 0x35c]
mov dword [esp + 4], eax
call fcn.00413000
sub esp, 8
mov eax, edi
and eax, 1
shl eax, 1
xor edi, 1
add edi, eax
mov eax, dword [esp + 0x280]
jmp 0x410c3b
mov dword [esp + 0x3c], esi
lea ecx, [esp + 0x3d8]
mov dword [esp], 3
call fcn.00408df0
sub esp, 4
lea eax, [esp + 0x3d8]
mov dword [esp], eax
mov eax, dword [esp + 0x28c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x284]
mov dword [esp + 8], eax
mov esi, dword [esp + 0x3c]
mov dword [esp + 0xc], esi
mov eax, dword [esp + 0x38]
mov dword [esp + 0x10], eax
call fcn.0041b690
lea ecx, [esp + 0x3d8]
call fcn.004097d0
cmp esi, 0
sete al
test al, 1
jne 0x410e33
jmp 0x410dfe
mov edi, esi
add edi, 0xfffffffc
mov eax, dword [esi - 4]
shl eax, 3
mov ebx, esi
add ebx, eax
cmp esi, ebx
je 0x410e25
jmp 0x410e13
add ebx, 0xfffffff8
mov ecx, ebx
call fcn.004130c0
cmp ebx, dword [esp + 0x3c]
jne 0x410e13
jmp 0x410e25
mov dword [esp], edi
call fcn.004081c0
mov edi, dword [esp + 0x28]
jmp 0x410e33
jmp 0x410e35
mov eax, dword [esp + 0x28c]
mov dword [esp], eax
call fcn.004081c0
jmp 0x410e46
mov eax, dword [esp + 0x284]
mov dword [esp], eax
call fcn.004081c0
lea ecx, [esp + 0x3d8]
call fcn.00408ed0
jmp 0x410e63
mov esi, dword [esp + 0x3a0]
jmp 0x410e6c
sub edi, 0xffffffff
jmp 0x410e71
jmp 0x40e366
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret