Function at 0x40f132
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x310
mov esi, esp
push eax
push eax
mov dword [esi + 8], esp
sub esp, 8
mov dword [esi + 0x40], esp
sub esp, 0x88
mov edi, esp
and edi, 0xfffffff8
mov esp, edi
push eax
sub esp, 0x84
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x68], eax
mov esp, eax
push eax
sub esp, 0x84
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x64], eax
mov esp, eax
push eax
sub esp, 0x84
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x60], eax
mov esp, eax
push eax
sub esp, 0x84
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x5c], eax
mov esp, eax
push eax
sub esp, 0x84
mov ebx, esp
and ebx, 0xfffffff8
mov esp, ebx
push eax
sub esp, 0xfc
mov dword [esi + 0x10], esp
sub esp, 0xc
mov dword [esi + 0x30], esp
sub esp, 8
mov dword [esi + 0x24], esp
sub esp, 0x24
mov dword [esi + 0x20], esp
push eax
mov dword [esi + 0x2c], esp
push eax
mov dword [esi + 0x38], esp
sub esp, 0x68
mov dword [esi + 0x1c], esp
sub esp, 0x10
mov dword [esi + 0xc], esp
sub esp, 0x88
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x58], eax
mov esp, eax
push eax
sub esp, 0xc
mov dword [esi + 0x78], esp
sub esp, 0x800
mov dword [esi + 0x70], esp
sub esp, 0x7c
mov dword [esi + 0x34], esp
sub esp, 0x44
mov dword [esi + 0x6c], esp
sub esp, 0x10
mov dword [esi + 0x28], esp
push 2
push 0
call dword [sym.imp.ole32.dll_CoInitializeEx]
shr eax, 0x1f
mov eax, dword [eax*4 + 0x441344]
mov ecx, 0xa818f183
xor ecx, dword [0x44134c]
add eax, ecx
inc eax
jmp eax
sub esp, 4
mov dword [esp], edi
call fcn.00402030
add esp, 4
cmp ebx, eax
jb 0x40ef6e
mov al, 1
jmp 0x411b26
sub esp, 8
mov dword [esp], edi
mov dword [esi + 0x1ec], ebx
mov dword [esp + 4], ebx
call fcn.00402040
add esp, 8
mov ebx, eax
mov eax, dword [esi + 0x360]
mov al, byte [eax]
mov byte [esi + 0xd8], al
mov ecx, dword [esi + 0xd0]
mov byte [ecx], 0xcc
mov byte [ecx + 1], 0x71
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 8
jne 0x40efa8
mov dword [esi + 4], edi
xor eax, eax
mov dword [esi], ebx
cmp eax, 8
jae 0x40f009
mov ebx, dword [esi + 0xd0]
movzx edi, byte [ebx + eax]
mov edx, eax
add edx, 0x85ccb94
mov ecx, edi
xor ecx, 0xffffffff
and edx, ecx
mov ecx, 0x6b
sub ecx, eax
and ecx, edi
or ecx, edx
mov edx, ecx
xor edx, 0xe5
shl ecx, 1
and ecx, 0x34
sub ecx, edx
add cl, 1
mov byte [ebx + eax], cl
mov ebx, dword [esi]
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40efbb
sub esp, 0xc
mov eax, dword [esi + 0xd0]
mov dword [esp + 4], eax
mov dword [esp], ebx
mov dword [esp + 8], 3
call fcn.00401f10
add esp, 0xc
sub eax, 1
mov al, 1
sbb al, 0xff
test al, 1
jne 0x40f036
jmp 0x40f044
mov edi, dword [esi + 4]
mov ecx, dword [esi + 0x1ec]
jmp 0x411b16
mov ecx, dword [esi + 0x4c]
mov edi, dword [esi + 4]
mov eax, dword [esi + 0x35c]
mov al, byte [eax]
mov byte [esi + 0xdc], al
mov byte [ecx], 0x40
mov byte [ecx + 1], 0xcb
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 8
jne 0x40f064
xor eax, eax
jmp 0x40f074
cmp eax, 8
jae 0x40f0d7
mov ecx, dword [esi + 0x4c]
movzx ecx, byte [ecx + eax]
mov edx, 0x3e8fb74c
sub edx, eax
or edx, ecx
mov edi, 0x4c
sub edi, eax
and edi, ecx
mov ebx, edx
xor ebx, 0xffffffff
mov ecx, edi
add ecx, ebx
mov ebx, edi
sub ebx, edx
sub edx, edi
mov edi, dword [esi + 4]
or edx, 0x38ce9480
add edx, ebx
or ecx, 0x38ce9480
add ecx, edx
add ecx, 0x130793f
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
add cl, 0xc1
mov edx, dword [esi + 0x4c]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x4c]
add eax, 1
jmp 0x40f074
mov ebx, dword [esi]
jmp 0x40f0db
jmp 0x40f0dd
sub esp, 8
mov dword [esp], ebx
mov dword [esp + 4], ecx
call fcn.004019b0
add esp, 8
fnstcw word [esi + 0x32]
movzx eax, word [esi + 0x32]
or eax, 0xc00
mov word [esi + 0x1a6], ax
fldcw word [esi + 0x1a6]
fistp dword [esi + 0x374]
fldcw word [esi + 0x32]
mov eax, dword [esi + 0x374]
jmp 0x40f119
jmp 0x40f11b
mov ecx, eax
sub ecx, 3
mov ecx, dword [esi + 0x7c]
ja 0x411b0e
mov eax, dword [eax*4 + 0x43e2bc]
jmp eax
mov eax, dword [esi + 0x358]
mov al, byte [eax]
mov byte [esi + 0xe0], al
mov edi, dword [esi + 0x220]
mov byte [edi], 0x58
mov byte [edi + 1], 0xc9
mov eax, 2
mov byte [edi + eax], 0
add eax, 1
cmp eax, 8
jne 0x40f152
xor eax, eax
cmp eax, 8
jae 0x40f1d0
movzx edx, byte [edi + eax]
mov ecx, 0x69ee524d
sub ecx, eax
or ecx, edx
mov edi, 0x69ee524d
sub edi, eax
mov ebx, 0x69ee524d
sub ebx, eax
and edi, ebx
mov ebx, 0x69ee524d
sub ebx, eax
or edi, ebx
mov ebx, edx
shl ebx, 1
xor ebx, 0xffffffff
add ebx, edx
xor edi, 0xffffffff
or ebx, edi
and ecx, ebx
mov ebx, dword [esi]
mov edi, dword [esi + 0x220]
mov edx, ecx
shl edx, 1
xor edx, 0xffffffff
add ecx, edx
add cl, 0x86
mov byte [edi + eax], cl
mov ecx, eax
and ecx, 1
mov edx, eax
and edx, 6
xor edx, 6
and eax, 6
xor eax, 0xfffffffe
or edx, eax
xor edx, 0xffffffff
add ecx, edx
mov eax, ecx
jmp 0x40f160
sub esp, 0xc
mov dword [esp], ebx
mov dword [esp + 4], edi
mov dword [esp + 8], 2
call fcn.00401f10
add esp, 0xc
cmp eax, 0
mov edi, dword [esi + 4]
je 0x40f4cd
mov eax, dword [esi + 0x350]
mov al, byte [eax]
mov byte [esi + 0xe4], al
mov ebx, dword [esi + 0x354]
mov byte [ebx], 0x25
mov byte [ebx + 1], 0x21
mov byte [ebx + 2], 0x22
mov byte [ebx + 3], 0x23
xor eax, eax
cmp eax, 4
jae 0x40f265
movzx edx, byte [ebx + eax]
mov edi, eax
shl edi, 1
and edi, 0xcd039990
mov ecx, eax
xor ecx, 0x6681ccc8
add ecx, edi
mov edi, ecx
and edi, edx
shl edi, 1
add ecx, edx
sub ecx, edi
add ecx, 0xff770017
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [ebx + eax], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40f21b
mov eax, dword [ebx]
mov dword [esi + 0x250], eax
mov eax, dword [esi + 0x34c]
mov cl, byte [eax]
mov byte [esi + 0xe8], cl
mov eax, dword [esi + 0x21c]
mov byte [eax], 0x33
mov byte [eax + 1], 0x87
mov ecx, 2
mov byte [eax + ecx], 0
add ecx, 1
cmp ecx, 5
jne 0x40f28d
mov ebx, dword [esi]
xor ecx, ecx
jmp 0x40f29f
cmp ecx, 5
jae 0x40f2dc
movzx edi, byte [eax + ecx]
mov edx, ecx
add edx, 0xc5b4b7a1
mov eax, ecx
add eax, 0x21
mov ebx, edx
or ebx, eax
and ebx, edi
shl ebx, 1
mov eax, edx
and eax, edi
shl eax, 1
xor edx, edi
add edx, eax
mov eax, dword [esi + 0x21c]
sub edx, ebx
mov ebx, dword [esi]
add dl, 0xdb
mov byte [eax + ecx], dl
add ecx, 1
jmp 0x40f29f
sub esp, 0xc
mov dword [esp], ebx
mov dword [esp + 4], eax
mov eax, dword [esi + 0x250]
mov dword [esp + 8], eax
call fcn.00401f10
add esp, 0xc
cmp eax, 0
setne al
mov edi, dword [esi + 4]
test al, 1
mov ecx, dword [esi + 0xcc]
jne 0x40f310
jmp 0x40f4cd
mov eax, dword [esi + 0x348]
mov al, byte [eax]
mov byte [esi + 0xec], al
mov byte [ecx], 0xf6
mov byte [ecx + 1], 0x7f
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 4
jne 0x40f32a
xor eax, eax
cmp eax, 4
jae 0x40f35e
mov ecx, dword [esi + 0xcc]
mov cl, byte [ecx + eax]
mov dl, al
add dl, 0x95
xor dl, cl
mov ecx, dword [esi + 0xcc]
add dl, 0x17
mov byte [ecx + eax], dl
add eax, 1
jmp 0x40f338
sub esp, 0xc
mov dword [esp], ebx
mov dword [esp + 4], ecx
mov dword [esp + 8], 2
call fcn.00401f10
add esp, 0xc
cmp eax, 0
setne al
test al, 1
jne 0x40f387
jmp 0x40f4cd
mov eax, dword [esi + 0x344]
mov al, byte [eax]
mov byte [esi + 0xf0], al
mov ecx, dword [esi + 0xc8]
mov byte [ecx], 0xac
mov byte [ecx + 1], 0x11
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 4
jne 0x40f3a7
xor eax, eax
cmp eax, 4
jae 0x40f40f
mov ecx, dword [esi + 0xc8]
movzx ecx, byte [ecx + eax]
mov edi, eax
add edi, 0xbc
mov edx, 0x43
sub edx, eax
mov ebx, 0x43
sub ebx, eax
and edx, ebx
or edx, ecx
xor edx, 0xffffffff
mov ebx, 0x43
sub ebx, eax
and ebx, 0x67
and edi, 0x98
or ebx, edi
xor ebx, ecx
xor ebx, 0x67
and ebx, ecx
mov ecx, dword [esi + 0xc8]
or ebx, edx
add bl, 0x54
mov byte [ecx + eax], bl
mov ebx, dword [esi]
add eax, 1
jmp 0x40f3b5
sub esp, 0xc
mov dword [esp], ebx
mov dword [esp + 4], ecx
mov dword [esp + 8], 3
call fcn.00401f10
add esp, 0xc
cmp eax, 0
mov edi, dword [esi + 4]
je 0x40f4cd
mov eax, dword [esi + 0x340]
mov al, byte [eax]
mov byte [esi + 0xf4], al
mov ecx, dword [esi + 0xc4]
mov byte [ecx], 0x1a
mov byte [ecx + 1], 0x6a
mov byte [ecx + 2], 0xe6
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 5
jne 0x40f459
xor eax, eax
cmp eax, 5
jae 0x40f4a2
mov dl, byte [ecx + eax]
mov edi, eax
xor edi, 0xb7
mov ecx, eax
shl ecx, 1
and ecx, 0x90
sub ecx, edi
mov edi, dword [esi + 4]
add cl, 0xe0
xor cl, dl
add cl, 0x33
mov edx, dword [esi + 0xc4]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0xc4]
add eax, 1
jmp 0x40f467
sub esp, 0xc
mov dword [esp + 4], ecx
mov dword [esp], ebx
mov dword [esp + 8], 3
call fcn.00401f10
add esp, 0xc
sub eax, 1
mov al, 1
sbb al, 0xff
test al, 1
jne 0x411b0e
jmp 0x40f4d2
jmp 0x411b0e
mov eax, dword [esi + 0x338]
mov al, byte [eax]
mov byte [esi + 0xf8], al
mov ebx, dword [esi + 0x33c]
mov byte [ebx], 0x48
mov byte [ebx + 1], 0xf9
mov eax, 2
mov byte [ebx + eax], 0
add eax, 1
cmp eax, 6
jne 0x40f4f2
xor eax, eax
cmp eax, 6
jae 0x40f53f
movzx edx, byte [ebx + eax]
mov ecx, eax
add ecx, 0x91f5c856
mov edi, ecx
and edi, edx
shl edi, 1
sub ecx, edi
add ecx, edx
mov edi, ecx
shl edi, 1
and edi, 0xa2
xor ecx, 0x26331651
mov edx, ecx
add edx, edi
and ecx, 1
or edx, 1
add edx, ecx
mov byte [ebx + eax], dl
add eax, 1
jmp 0x40f500
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov dword [esp + 4], ebx
call fcn.00401880
add esp, 8
mov dword [esi + 0x1d0], eax
mov eax, dword [esi + 0x334]
mov al, byte [eax]
mov byte [esi + 0xfc], al
mov ecx, dword [esi + 0xc0]
mov byte [ecx], 0xb5
mov byte [ecx + 1], 0x19
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 8
jne 0x40f579
xor eax, eax
cmp eax, 8
jae 0x40f5ca
mov ecx, dword [esi + 0xc0]
mov cl, byte [ecx + eax]
movzx edx, cl
mov edi, eax
add edi, 0x20f5c37a
mov ebx, edi
and ebx, edx
shl ebx, 1
sub edi, ebx
add edi, edx
mov edx, 5
sub edx, eax
or edx, edi
shl edx, 1
add edx, eax
add dl, cl
mov ecx, dword [esi + 0xc0]
add dl, 0x1a
mov byte [ecx + eax], dl
add eax, 1
jmp 0x40f587
sub esp, 8
mov ebx, dword [esi]
mov dword [esp], ebx
mov dword [esp + 4], ecx
call fcn.00401ae0
add esp, 8
mov ecx, eax
mov eax, dword [esi + 0x330]
mov al, byte [eax]
mov byte [esi + 0x100], al
mov edx, dword [esi + 0xbc]
mov byte [edx], 0xbe
mov byte [edx + 1], 0x39
mov eax, 2
mov byte [edx + eax], 0
add eax, 1
cmp eax, 4
jne 0x40f600
mov dword [esi + 0x1e0], ecx
xor eax, eax
cmp eax, 4
jae 0x40f690
movzx edx, byte [edx + eax]
mov dword [esi + 0x230], edx
mov ecx, eax
add ecx, 0x7b9dcf36
mov edi, eax
add edi, 0x36
and edi, edx
mov edx, edi
and edx, 0xfd
mov ebx, edi
or ebx, 0xfffffffd
add ebx, 1
imul ebx, edx
mov edx, edi
and edx, 2
or edi, 2
imul edi, edx
sub ebx, edi
add ecx, dword [esi + 0x230]
add ecx, ebx
mov ebx, dword [esi]
mov edx, ecx
add edx, 0x57
mov edi, 0x28
sub edi, ecx
and edi, 0x65
and edx, 0x9a
sub edx, edi
mov ecx, dword [esi + 0xbc]
mov byte [ecx + eax], dl
mov edx, dword [esi + 0xbc]
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40f614
sub esp, 8
mov dword [esp], ebx
mov dword [esp + 4], edx
call fcn.00401880
add esp, 8
mov dword [esi + 0x284], eax
mov eax, dword [esi + 0x32c]
mov al, byte [eax]
mov byte [esi + 0x104], al
mov ecx, dword [esi + 0xb8]
mov byte [ecx], 4
mov byte [ecx + 1], 0x99
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 6
jne 0x40f6c8
xor eax, eax
cmp eax, 6
jae 0x40f711
mov dl, byte [ecx + eax]
mov edi, eax
add edi, 0x66
mov ecx, 0x99
sub ecx, eax
and ecx, 0x99
and edi, 0x66
or ecx, edi
xor cl, dl
xor cl, 0x99
add cl, 2
mov edx, dword [esi + 0xb8]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0xb8]
add eax, 1
jmp 0x40f6d6
sub esp, 8
mov dword [esp + 4], ecx
mov dword [esp], ebx
call fcn.004019b0
add esp, 8
fnstcw word [esi + 0x30]
movzx eax, word [esi + 0x30]
or eax, 0xc00
mov word [esi + 0x1a4], ax
fldcw word [esi + 0x1a4]
fistp dword [esi + 0x368]
fldcw word [esi + 0x30]
mov eax, dword [esi + 0x368]
mov dword [esi + 0x288], eax
mov eax, dword [esi + 0x328]
mov al, byte [eax]
mov byte [esi + 0x108], al
mov ecx, dword [esi + 0xb4]
mov byte [ecx], 0x9e
mov byte [ecx + 1], 0xee
mov byte [ecx + 2], 0x7a
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 5
jne 0x40f775
xor eax, eax
cmp eax, 5
jae 0x40f7bc
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0x9a56ebf
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x88
xor ecx, 0x44
add ecx, edx
add cl, 1
mov edx, dword [esi + 0xb4]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0xb4]
add eax, 1
jmp 0x40f783
sub esp, 8
mov dword [esp + 4], ecx
mov dword [esp], ebx
call fcn.004019b0
add esp, 8
fnstcw word [esi + 0x2e]
movzx eax, word [esi + 0x2e]
or eax, 0xc00
mov word [esi + 0x1a2], ax
fldcw word [esi + 0x1a2]
fistp dword [esi + 0x364]
fldcw word [esi + 0x2e]
mov eax, dword [esi + 0x364]
mov dword [esi + 0x280], eax
mov eax, dword [esi + 0x324]
mov al, byte [eax]
mov byte [esi + 0x10c], al
mov ecx, dword [esi + 0x218]
mov byte [ecx], 0x6e
mov byte [ecx + 1], 0x65
mov byte [ecx + 2], 0x92
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 6
jne 0x40f820
xor eax, eax
cmp eax, 6
jae 0x40f861
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0x5c
mov edi, edx
xor edi, 0xffffffff
and ecx, edi
mov ebx, 0xa3
sub ebx, eax
and ebx, edx
or ebx, ecx
mov ecx, dword [esi + 0x218]
add bl, 0x34
mov byte [ecx + eax], bl
mov ebx, dword [esi]
add eax, 1
jmp 0x40f82e
sub esp, 8
mov dword [esp], ebx
mov dword [esp + 4], ecx
call fcn.00401c10
add esp, 8
cmp eax, 0
setg byte [esi + 0xf]
sub esp, 4
mov eax, dword [esi + 0x1d0]
mov dword [esp], eax
call fcn.00413b00
add esp, 4
mov ebx, eax
mov dword [esi + 0x1b0], ebx
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f8b1
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408770
add esp, 4
mov edi, eax
xor eax, eax
sub esp, 0x10
mov dword [esp], edi
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x1d0]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040b170
add esp, 0x10
xor eax, eax
sub esp, 0x18
mov dword [esp], 0
mov dword [esp + 4], edi
mov eax, dword [esi + 0x1b0]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov ebx, dword [esi + 0x214]
mov dword [esp + 0x14], ebx
call dword [0x448584]
mov eax, dword [ebx]
mov ecx, 2
mul ecx
seto dl
jmp 0x40f92f
mov ecx, 0xffffffff
test dl, 1
jne 0x40f93b
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408770
add esp, 4
mov ecx, dword [0x448584]
mov dword [esi + 0x228], ecx
mov ebx, dword [esi + 0x214]
mov ecx, dword [ebx]
xor edx, edx
sub esp, 0x18
mov dword [esp], 0
mov dword [esp + 4], edi
mov edx, dword [esi + 0x1b0]
mov dword [esp + 8], edx
mov dword [esi + 0x1c8], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], ebx
call dword [esi + 0x228]
sub esp, 4
mov dword [esp], edi
call fcn.00408780
add esp, 4
mov ebx, dword [esi + 0x284]
jmp 0x40f9a5
sub esp, 4
mov dword [esp], ebx
call fcn.00413b00
add esp, 4
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f9d0
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408770
add esp, 4
jmp 0x40f9e0
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x1c0], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040b170
add esp, 0x10
mov ecx, dword [esi + 0xb0]
mov edi, dword [esi + 0x1e0]
sub esp, 4
mov dword [esp], 1
call fcn.00409510
jmp 0x40fa23
xor ebx, ebx
jmp 0x40fa27
sub esp, 4
mov dword [esp], edi
call fcn.00402030
add esp, 4
cmp ebx, eax
jb 0x40fa3e
jmp 0x40fb48
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], ebx
call fcn.00402010
add esp, 4
mov dword [esp], eax
call fcn.00401990
add esp, 4
cmp eax, 0
jne 0x40fa65
jmp 0x40fb34
sub esp, 4
mov dword [esi + 0x244], eax
mov dword [esp], eax
call fcn.00413b00
add esp, 4
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 0x40fa9d
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408770
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], edi
mov edi, eax
mov eax, dword [esi + 0x244]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
add byte [eax], al
add al, ch
mov al, byte [0x83ffffb6]
in al, dx
or al, 0x8b
xchg byte [eax - 0x76fffffe], cl
inc esp
and al, 0x14
add byte [eax], al
add al, ch
mov al, byte [0x83ffffb6]
in al, dx
or al, 0x8b
xchg byte [eax - 0x76fffffe], cl
inc esp
and al, 0x14
mov eax, dword [esi + 0x280]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edi
mov eax, dword [esi + 0x1c8]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x1c0]
mov dword [esp + 4], eax
mov eax, dword [esi + 0xb0]
mov dword [esp], eax
xor eax, eax
mov cl, byte [esi + 0xf]
mov al, cl
and eax, 1
mov dword [esp + 0x18], eax
call fcn.0041c800
add esp, 0x1c
sub esp, 4
mov dword [esp], edi
call fcn.00408780
add esp, 4
mov edi, dword [esi + 0x1e0]
jmp 0x40fb34
sub ebx, 0xf4e8cc10
add ebx, 1
add ebx, 0xf4e8cc10
jmp 0x40fa27
sub esp, 4
mov eax, dword [esi + 0x1c0]
mov dword [esp], eax
call fcn.00408780
add esp, 4
jmp 0x40fb5e
sub esp, 4
mov eax, dword [esi + 0x1c8]
mov dword [esp], eax
call fcn.00408780
add esp, 4
mov edi, dword [esi + 0xb0]
jmp 0x40fb7a
mov ecx, edi
call fcn.00409fe0
mov ecx, edi
call fcn.004095f0
mov edi, dword [esi + 4]
jmp 0x411b0e
mov eax, dword [esi + 0x320]
mov al, byte [eax]
mov byte [esi + 0x110], al
mov ebx, dword [esi + 0x210]
mov byte [ebx], 0x75
mov byte [ebx + 1], 0xb
mov eax, 2
mov byte [ebx + eax], 0
add eax, 1
cmp eax, 5
jne 0x40fbb0
xor eax, eax
cmp eax, 5
jae 0x40fbf8
movzx edi, byte [ebx + eax]
mov ecx, 0xfc
sub ecx, eax
or ecx, edi
mov edx, 0xfc
sub edx, eax
mov ebx, 0xfc
sub ebx, eax
or edx, ebx
mov ebx, dword [esi + 0x210]
and edx, edi
xor ecx, 0xffffffff
or edx, ecx
add dl, 0xf1
mov byte [ebx + eax], dl
add eax, 1
jmp 0x40fbbe
sub esp, 0xc
mov eax, dword [esi]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], 2
call fcn.00401f10
add esp, 0xc
cmp eax, 0
mov edi, dword [esi + 4]
je 0x40ff93
mov eax, dword [esi + 0x31c]
mov al, byte [eax]
mov byte [esi + 0x114], al
mov ecx, dword [esi + 0x20c]
mov byte [ecx], 0xe8
mov byte [ecx + 1], 0x99
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 7
jne 0x40fc40
xor eax, eax
mov ebx, dword [esi]
cmp eax, 7
jae 0x40fca9
movzx edx, byte [ecx + eax]
mov edi, eax
add edi, 0x9a
mov ecx, eax
add ecx, 0x9a
and edi, ecx
mov ecx, eax
add ecx, 0x9a
mov ebx, eax
add ebx, 0x9a
and ecx, ebx
mov ebx, dword [esi]
or ecx, edi
and ecx, edx
mov edi, edx
shl edi, 1
xor edi, 0xffffffff
add edi, edx
mov edx, 0x65
sub edx, eax
and edi, edx
or ecx, edi
mov dl, 0xfd
sub dl, cl
mov ecx, dword [esi + 0x20c]
mov byte [ecx + eax], dl
add eax, 1
jmp 0x40fc50
sub esp, 0xc
mov dword [esp], ebx
mov dword [esp + 4], ecx
mov dword [esp + 8], 2
call fcn.00401f10
add esp, 0xc
cmp eax, 0
mov edi, dword [esi + 4]
je 0x40ff93
mov eax, dword [esi + 0x318]
mov al, byte [eax]
mov byte [esi + 0x118], al
mov ecx, dword [esi + 0xac]
mov byte [ecx], 0xb7
mov byte [ecx + 1], 0x2b
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 6
jne 0x40fcef
xor eax, eax
mov ebx, dword [esi]
cmp eax, 6
jae 0x40fd35
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0xf7
or ecx, edx
mov edi, eax
add edi, 0xf7
and edi, edx
sub ecx, edi
add cl, 0x2d
mov edx, dword [esi + 0xac]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0xac]
add eax, 1
jmp 0x40fcff
sub esp, 0xc
mov dword [esp], ebx
mov dword [esp + 4], ecx
mov dword [esp + 8], 5
call fcn.00401f10
add esp, 0xc
cmp eax, 0
mov edi, dword [esi + 4]
je 0x40ff93
mov eax, dword [esi + 0x314]
mov al, byte [eax]
mov byte [esi + 0x11c], al
mov ecx, dword [esi + 0x208]
mov byte [ecx], 0xa
mov byte [ecx + 1], 0xbb
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 4
jne 0x40fd7b
xor edx, edx
mov ebx, dword [esi]
cmp edx, 4
jae 0x40fdcb
movzx ebx, byte [ecx + edx]
mov dword [esi + 0x224], ebx
mov eax, edx
add eax, 0xc8511d1f
mov edi, ebx
xor edi, 0xffffffff
xor ebx, 0xffffffff
mov ecx, eax
or ecx, ebx
mov ebx, dword [esi]
sub edi, ecx
mov ecx, dword [esi + 0x208]
shl edi, 1
add eax, dword [esi + 0x224]
add eax, edi
add al, 0x65
mov byte [ecx + edx], al
add edx, 1
jmp 0x40fd8b
sub esp, 0xc
mov dword [esp], ebx
mov dword [esp + 4], ecx
mov dword [esp + 8], 2
call fcn.00401f10
add esp, 0xc
cmp eax, 0
mov edi, dword [esi + 4]
je 0x40ff93
mov eax, dword [esi + 0x310]
mov al, byte [eax]
mov byte [esi + 0x120], al
mov ecx, dword [esi + 0xa8]
mov byte [ecx], 0xe4
mov byte [ecx + 1], 1
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 7
jne 0x40fe11
xor edx, edx
mov ebx, dword [esi]
cmp edx, 7
jae 0x40fec2
movzx edi, byte [ecx + edx]
mov dword [esi + 0x240], edi
mov dword [esi + 0x10], edx
mov edx, dword [esi + 0x10]
add edx, 0x19a8eb40
mov ecx, 0xbf
sub ecx, dword [esi + 0x10]
mov eax, 0xbf
sub eax, dword [esi + 0x10]
and ecx, eax
or ecx, edi
mov ebx, 0xe65714bf
sub ebx, dword [esi + 0x10]
and ebx, 0xa6c6510c
mov eax, edx
and eax, 0x5939aef3
or ebx, eax
mov eax, 0x65714bf
sub eax, dword [esi + 0x10]
and eax, 0x6976504
and edx, 0xf9689afb
or eax, edx
mov edi, ebx
xor edi, 0xc
xor ebx, 0xc
or edi, ebx
mov ebx, dword [esi]
mov edx, eax
xor edx, 4
xor eax, 4
or edx, eax
and edx, edi
mov eax, dword [esi + 0x240]
xor eax, 0xffffffff
or edx, eax
xor ecx, edx
mov edx, dword [esi + 0x10]
add cl, 0xc0
mov eax, dword [esi + 0xa8]
mov byte [eax + edx], cl
mov ecx, dword [esi + 0xa8]
add edx, 1
jmp 0x40fe21
sub esp, 0xc
mov dword [esp], ebx
mov dword [esp + 4], ecx
mov dword [esp + 8], 3
call fcn.00401f10
add esp, 0xc
cmp eax, 0
mov edi, dword [esi + 4]
je 0x40ff93
mov eax, dword [esi + 0x30c]
mov al, byte [eax]
mov byte [esi + 0x124], al
mov ecx, dword [esi + 0x48]
mov byte [ecx], 0xaa
mov byte [ecx + 1], 0x9a
mov byte [ecx + 2], 0xe
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 4
jne 0x40ff09
mov ebx, dword [esi]
xor eax, eax
cmp eax, 4
jae 0x40ff5f
mov ecx, dword [esi + 0x48]
mov cl, byte [ecx + eax]
mov edi, 2
sub edi, eax
and edi, 9
mov edx, 0x82
sub edx, eax
mov ebx, 0x82
sub ebx, eax
and edx, ebx
mov ebx, dword [esi]
and edx, 0xf6
or edx, edi
mov edi, dword [esi + 4]
xor dl, cl
mov cl, 0x8e
sub cl, dl
mov edx, dword [esi + 0x48]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x48]
add eax, 1
jmp 0x40ff19
sub esp, 0xc
mov dword [esp], ebx
mov dword [esp + 4], ecx
mov dword [esp + 8], 3
call fcn.00401f10
add esp, 0xc
cmp eax, 0
setne al
and al, 0xff
or al, 0
xor al, 0xff
jmp 0x40ff87
jmp 0x40ff89
test al, 1
jne 0x411b0e
jmp 0x40ff98
jmp 0x411b0e
mov eax, dword [esi + 0x304]
mov al, byte [eax]
mov byte [esi + 0x128], al
mov edi, dword [esi + 0x308]
mov byte [edi], 0xaf
mov byte [edi + 1], 0x11
mov eax, 2
mov byte [edi + eax], 0
add eax, 1
cmp eax, 6
jne 0x40ffb8
xor eax, eax
mov ebx, dword [esi + 0x300]
cmp eax, 6
jae 0x40ffe6
mov cl, byte [edi + eax]
mov dl, al
add dl, 0xfc
xor dl, cl
add dl, 0x14
mov byte [edi + eax], dl
add eax, 1
jmp 0x40ffcc
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov dword [esp + 4], edi
call fcn.00401880
add esp, 8
mov dword [esi + 0x1d4], eax
mov eax, dword [esi + 0x2fc]
mov al, byte [eax]
mov byte [esi + 0x12c], al
mov byte [ebx], 0xbc
mov byte [ebx + 1], 0x4f
mov eax, 2
mov byte [ebx + eax], 0
add eax, 1
cmp eax, 5
jne 0x41001a
xor eax, eax
cmp eax, 5
jae 0x41006b
movzx edx, byte [ebx + eax]
mov ecx, eax
add ecx, 0xa1245ee2
mov edi, 0x5edba11d
sub edi, eax
and edi, 0x6bd8d0d5
and ecx, 0x94272f2a
sub ecx, edi
xor ecx, edx
mov edx, ecx
and edx, 0x42
xor edx, 0x42
and ecx, 0xbd
sub ecx, edx
add cl, 1
mov byte [ebx + eax], cl
add eax, 1
jmp 0x410028
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov dword [esp + 4], ebx
call fcn.00401880
add esp, 8
mov dword [esi + 0x290], eax
mov eax, dword [esi + 0x2f4]
mov al, byte [eax]
mov byte [esi + 0x130], al
mov ebx, dword [esi + 0x2f8]
mov byte [ebx], 0xdf
mov byte [ebx + 1], 0x4b
mov eax, 2
mov byte [ebx + eax], 0
add eax, 1
cmp eax, 4
jne 0x4100a5
xor eax, eax
cmp eax, 4
jae 0x4100de
movzx edx, byte [ebx + eax]
mov ecx, 0xc
sub ecx, eax
and ecx, edx
mov edi, 0xc
sub edi, eax
or edi, edx
xor edi, 0xffffffff
or ecx, edi
add cl, 0x41
mov byte [ebx + eax], cl
add eax, 1
jmp 0x4100b3
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov dword [esp + 4], ebx
call fcn.00401ae0
add esp, 8
mov edx, eax
mov eax, dword [esi + 0x2f0]
mov al, byte [eax]
mov byte [esi + 0x134], al
mov ecx, dword [esi + 0x44]
mov byte [ecx], 0x5e
mov byte [ecx + 1], 0xc7
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 5
jne 0x410111
mov dword [esi + 0x2a0], edx
xor eax, eax
cmp eax, 5
jae 0x41018e
mov ecx, dword [esi + 0x44]
movzx ecx, byte [ecx + eax]
mov edx, eax
add edx, 0xb1
mov edi, ecx
add edi, 1
mov ebx, ecx
xor ebx, 0xffffffff
or edx, ebx
add edx, edi
mov ebx, edx
and ebx, 0xfffffffd
mov edi, edx
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, edx
and ebx, 2
or edx, 2
imul edx, ebx
add edx, edi
add ecx, eax
add ecx, 0x3885edb1
sub ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x14
xor ecx, 0x8a
add ecx, edx
add cl, 1
mov edx, dword [esi + 0x44]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x44]
add eax, 1
jmp 0x410125
sub esp, 8
mov ebx, dword [esi]
mov dword [esp], ebx
mov dword [esp + 4], ecx
call fcn.00401880
add esp, 8
mov dword [esi + 0x298], eax
mov eax, dword [esi + 0x2ec]
mov al, byte [eax]
mov byte [esi + 0x138], al
mov ecx, dword [esi + 0xa4]
mov byte [ecx], 0x70
mov byte [ecx + 1], 0xb
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 6
jne 0x4101c8
xor eax, eax
cmp eax, 6
jae 0x41021f
mov cl, byte [ecx + eax]
mov byte [esi + 0xb], cl
movzx edi, cl
mov ecx, eax
add ecx, 0x5438903
mov ebx, ecx
and ebx, edi
shl ebx, 1
mov edx, ecx
sub edx, ebx
mov ebx, dword [esi]
add edx, edi
xor edx, 0xffffffff
mov edi, ecx
and edi, edx
shl edi, 1
sub ecx, edi
add cl, byte [esi + 0xb]
add cl, 0xf1
mov edx, dword [esi + 0xa4]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0xa4]
add eax, 1
jmp 0x4101d6
sub esp, 8
mov dword [esp + 4], ecx
mov dword [esp], ebx
call fcn.004019b0
add esp, 8
fnstcw word [esi + 0x2c]
movzx eax, word [esi + 0x2c]
or eax, 0xc00
mov word [esi + 0x1a0], ax
fldcw word [esi + 0x1a0]
fistp dword [esi + 0x370]
fldcw word [esi + 0x2c]
mov eax, dword [esi + 0x370]
mov dword [esi + 0x29c], eax
mov eax, dword [esi + 0x2e8]
mov al, byte [eax]
mov byte [esi + 0x13c], al
mov ecx, dword [esi + 0xa0]
mov byte [ecx], 0xe2
mov byte [ecx + 1], 0xf6
mov byte [ecx + 2], 0x56
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 7
jne 0x410283
xor eax, eax
cmp eax, 7
jae 0x4102dc
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0xee32f7ee
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0xb20250b2
xor ecx, 0x59012859
add ecx, edx
mov edx, ecx
xor edx, 0xe7
shl ecx, 1
and ecx, 0x30
sub ecx, edx
add cl, 0xe8
mov edx, dword [esi + 0xa0]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0xa0]
add eax, 1
jmp 0x410291
sub esp, 8
mov dword [esp + 4], ecx
mov dword [esp], ebx
call fcn.004019b0
add esp, 8
fnstcw word [esi + 0x2a]
movzx eax, word [esi + 0x2a]
or eax, 0xc00
mov word [esi + 0x19e], ax
fldcw word [esi + 0x19e]
fistp dword [esi + 0x36c]
fldcw word [esi + 0x2a]
mov eax, dword [esi + 0x36c]
mov dword [esi + 0x294], eax
sub esp, 4
mov eax, dword [esi + 0x1d4]
mov dword [esp], eax
call fcn.00413b00
add esp, 4
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 0x410354
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408770
add esp, 4
mov ebx, eax
xor eax, eax
sub esp, 0x10
mov dword [esp], ebx
mov dword [esp + 4], edi
mov eax, dword [esi + 0x1d4]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040b170
add esp, 0xc
mov ecx, dword [esi + 0x24]
mov dword [esp], ebx
call fcn.00413b80
sub esp, 4
mov dword [esp], ebx
call fcn.00408780
add esp, 4
mov edi, dword [esi + 4]
sub esp, 4
mov ecx, dword [esi + 0x24]
mov dword [esp], 0x400
call fcn.00435760
cmp eax, 0
setge al
test al, 1
jne 0x4103c9
jmp 0x4103c4
jmp 0x410aa8
mov eax, dword [esi + 0x9c]
mov dword [eax], 0
mov eax, dword [esi + 0x24]
mov eax, dword [eax]
mov dword [esi + 0x264], eax
mov al, byte [esi + 0x140]
mov byte [esi + 0x19c], al
mov byte [esi + 0x144], 0xcd
mov byte [esi + 0x145], 0xca
mov byte [esi + 0x146], 0xcb
mov byte [esi + 0x147], 0xc8
mov eax, 4
mov byte [esi + eax + 0x144], 0
add eax, 1
cmp eax, 6
jne 0x41040d
xor eax, eax
cmp eax, 6
jae 0x41046c
movzx edx, byte [esi + eax + 0x144]
mov ecx, eax
add ecx, 0x531a1913
mov edi, 0xace5e6ec
sub edi, eax
and edi, 0xa2749540
and ecx, 0x5d8b6abf
sub ecx, edi
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0xc0
xor ecx, 0xe0
add ecx, edx
add cl, 1
mov byte [esi + eax + 0x144], cl
add eax, 1
jmp 0x41041f
mov eax, dword [esi + 0x144]
mov dword [esi + 0x58], eax
xor edi, edi
mov ecx, 2
cmp edi, dword [0x448588]
jb 0x410489
jmp 0x410515
mov edx, dword [0x44858c]
cmp dword [edx + edi*8], 0xae6e2b0b
sete bl
xor ecx, ecx
mov byte [esi + 0xd], bl
test bl, 1
jne 0x4104a5
jmp 0x410505
mov edx, dword [edx + edi*8 + 4]
mov ecx, 2
cmp edx, dword [esi + 0x58]
je 0x410505
mov eax, dword [0x448590]
xor ecx, ecx
sub esp, 0x20
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 5
mov eax, dword [esi + 0x264]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov eax, dword [esi + 0x9c]
mov dword [esp + 0x1c], eax
call fcn.00437d80
add esp, 0x20
mov ecx, 1
test byte [esi + 0xd], 1
je 0x41050d
jmp 0x410515
add edi, 1
jmp 0x410477
cmp ecx, 2
je 0x41051d
mov dword [esi + 0x58], eax
mov eax, dword [esi + 0x2e4]
mov al, byte [eax]
mov byte [esi + 0x14c], al
mov eax, dword [esi + 0x40]
mov byte [eax], 0x18
mov byte [eax + 1], 0x27
mov byte [eax + 2], 0x26
mov byte [eax + 3], 0x61
xor ebx, ebx
cmp ebx, 4
jae 0x41059c
mov eax, dword [esi + 0x40]
movzx ecx, byte [eax + ebx]
mov edx, ebx
add edx, 0x553a3779
mov dword [esi + 0x234], edx
and edx, ecx
mov eax, edx
and eax, 2
xor eax, 2
mov edi, edx
and edi, 0xfd
imul edi, eax
mov eax, edx
and eax, 2
or edx, 2
imul edx, eax
add edx, edi
sub edx, dword [esi + 0x234]
mov eax, edx
xor eax, ecx
xor edx, 0xffffffff
and ecx, edx
shl ecx, 1
sub ecx, eax
add cl, 0xa3
mov eax, dword [esi + 0x40]
mov byte [eax + ebx], cl
add ebx, 1
jmp 0x41053f
mov eax, dword [esi + 0x40]
mov eax, dword [eax]
cmp dword [esi + 0x58], eax
mov edi, dword [esi + 4]
jne 0x410aa8
mov edi, dword [esi + 0x9c]
mov eax, dword [edi]
add eax, 2
sub esp, 4
mov dword [esp], eax
call fcn.004353b0
add esp, 4
mov dword [esi + 0x60], eax
mov eax, dword [edi]
xor ecx, ecx
sub ecx, eax
add ecx, 0xfffffffe
xor eax, eax
sub eax, ecx
mov dword [esi + 0x268], eax
mov eax, dword [esi + 0x24]
mov eax, dword [eax]
mov dword [esi + 0x260], eax
mov al, byte [esi + 0x150]
mov byte [esi + 0x198], al
mov byte [esi + 0x154], 0xcd
mov byte [esi + 0x155], 0xca
mov byte [esi + 0x156], 0xcb
mov byte [esi + 0x157], 0xc8
mov eax, 4
mov byte [esi + eax + 0x154], 0
add eax, 1
cmp eax, 6
jne 0x410614
xor eax, eax
cmp eax, 6
jae 0x410673
movzx edx, byte [esi + eax + 0x154]
mov ecx, eax
add ecx, 0x531a1913
mov edi, 0xace5e6ec
sub edi, eax
and edi, 0xa2749540
and ecx, 0x5d8b6abf
sub ecx, edi
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0xc0
xor ecx, 0xe0
add ecx, edx
add cl, 1
mov byte [esi + eax + 0x154], cl
add eax, 1
jmp 0x410626
mov edx, dword [esi + 0x154]
xor edi, edi
mov ecx, 2
cmp edi, dword [0x448588]
jb 0x41068d
jmp 0x41071d
mov dword [esi + 0x54], edx
mov edx, dword [0x44858c]
cmp dword [edx + edi*8], 0xae6e2b0b
sete bl
xor ecx, ecx
test bl, 1
jne 0x4106a9
jmp 0x410708
mov edx, dword [edx + edi*8 + 4]
mov ecx, 2
cmp edx, dword [esi + 0x54]
je 0x410708
mov eax, dword [0x448590]
xor ecx, ecx
sub esp, 0x20
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 5
mov eax, dword [esi + 0x260]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov eax, dword [esi + 0x60]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x268]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0
call fcn.00437d80
add esp, 0x20
mov ecx, 1
test bl, 1
je 0x410712
mov edx, dword [esi + 0x54]
jmp 0x41071d
add edi, 1
mov edx, dword [esi + 0x54]
jmp 0x41067b
cmp ecx, 2
je 0x410724
mov edx, eax
cmp edx, 0
jl 0x410a94
sub esp, 4
mov ebx, dword [esi + 0x290]
mov dword [esp], ebx
call fcn.00413b00
add esp, 4
mov edi, eax
mov dword [esi + 0x254], edi
sub edi, 0xaf93b6f9
add edi, 1
add edi, 0xaf93b6f9
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410770
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408770
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x25c], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040b170
add esp, 0x10
mov eax, dword [esi + 0x60]
mov edi, eax
add edi, 4
mov ebx, dword [eax + 4]
movzx eax, word [eax]
shr eax, 1
shl eax, 1
add ebx, eax
add ebx, 0xfffffffe
mov eax, ebx
cmp eax, dword [edi]
jb 0x4107db
mov cx, word [eax]
cmp cx, 0
je 0x4107db
movzx ecx, cx
cmp ecx, 0x5c
jne 0x4107d6
mov ebx, eax
jmp 0x4107dd
add eax, 0xfffffffe
jmp 0x4107bd
jmp 0x4107dd
mov eax, dword [edi]
xor eax, 0xffffffff
add ebx, eax
add ebx, 1
sar ebx, 1
mov ecx, dword [esi + 0x254]
xor ecx, 0xffffffff
sub ecx, 0xffffffff
mov eax, ebx
sub eax, ecx
mov ecx, eax
and ecx, 1
shl ecx, 1
xor eax, 1
add eax, ecx
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41081b
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408770
add esp, 4
mov ecx, dword [edi]
sub esp, 0xc
mov dword [esi + 0x24c], eax
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
call fcn.00413bb0
add esp, 4
mov dword [esp], eax
mov edi, dword [esi + 0x25c]
mov dword [esp + 4], edi
call fcn.0040a530
add esp, 8
mov ebx, eax
sub esp, 4
mov dword [esp], edi
call fcn.00408780
add esp, 4
mov edi, dword [esi + 0x24c]
sub ebx, edi
sar ebx, 1
sub ebx, 0xffffffff
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410891
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408770
sub esp, 4
mov dword [esp], edi
mov dword [esi + 0x1c4], eax
mov dword [esp + 4], eax
call fcn.004338b0
add esp, 8
sub esp, 4
mov dword [esp], edi
call fcn.00408780
add esp, 4
sub esp, 4
mov ebx, dword [esi + 0x298]
mov dword [esp], ebx
call fcn.00413b00
add esp, 4
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4108f3
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408770
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x1bc], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040b170
add esp, 0xc
mov ecx, dword [esi + 0x98]
mov dword [esp], 1
call fcn.00409510
xor ebx, ebx
sub esp, 4
mov edi, dword [esi + 0x2a0]
mov dword [esp], edi
call fcn.00402030
add esp, 4
cmp ebx, eax
jb 0x410958
jmp 0x410a54
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], ebx
call fcn.00402010
add esp, 4
mov dword [esp], eax
call fcn.00401990
add esp, 4
mov edi, eax
cmp edi, 0
jne 0x410981
jmp 0x410a4c
sub esp, 4
mov dword [esp], edi
call fcn.00413b00
add esp, 4
sub eax, 0xffffffff
mov ecx, 2
mov dword [esi + 0x238], eax
mul ecx
seto dl
jmp 0x4109a4
mov ecx, 0xffffffff
test dl, 1
jne 0x4109b0
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408770
add esp, 4
mov dword [esi + 0x50], eax
xor eax, eax
sub esp, 0x10
mov eax, dword [esi + 0x50]
mov dword [esp], eax
mov eax, dword [esi + 0x238]
mov dword [esp + 4], eax
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040b170
add esp, 0x10
xor eax, eax
sub esp, 0x1c
mov eax, dword [esi + 0x98]
mov dword [esp], eax
mov eax, dword [esi + 0x1bc]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1c4]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x50]
mov dword [esp + 0xc], eax
mov eax, dword [esi + 0x294]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x29c]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
call fcn.0041c800
add esp, 0x1c
sub esp, 4
mov eax, dword [esi + 0x50]
mov dword [esp], eax
call fcn.00408780
add esp, 4
jmp 0x410a4a
jmp 0x410a4c
add ebx, 1
jmp 0x41093b
sub esp, 4
mov eax, dword [esi + 0x1bc]
mov dword [esp], eax
call fcn.00408780
add esp, 4
jmp 0x410a6a
sub esp, 4
mov eax, dword [esi + 0x1c4]
mov dword [esp], eax
call fcn.00408780
add esp, 4
jmp 0x410a80
mov edi, dword [esi + 0x98]
mov ecx, edi
call fcn.00409fe0
mov ecx, edi
call fcn.004095f0
sub esp, 4
mov eax, dword [esi + 0x60]
mov dword [esp], eax
call fcn.00435470
add esp, 4
mov edi, dword [esi + 4]
mov ecx, dword [esi + 0x24]
call fcn.00413c70
jmp 0x411b0e
mov eax, dword [esi + 0x2e0]
mov al, byte [eax]
mov byte [esi + 0x15c], al
mov ebx, dword [esi + 0x204]
mov byte [ebx], 0x5c
mov byte [ebx + 1], 0xcb
mov eax, 2
mov byte [ebx + eax], 0
add eax, 1
cmp eax, 6
jne 0x410ad5
xor eax, eax
cmp eax, 6
jae 0x410b4b
movzx ecx, byte [ebx + eax]
mov edx, eax
xor edx, 0x2c6b34cc
mov edi, eax
or edi, 0xd394cb33
and edi, edx
mov ebx, edi
and ebx, 0xfffffffd
mov edx, eax
and edx, 2
xor edx, 2
imul edx, ebx
mov ebx, eax
and ebx, 2
or edi, 2
imul edi, ebx
mov ebx, dword [esi + 0x204]
add edi, edx
mov edx, eax
xor edx, 0xd394cb33
add edx, edi
mov edi, edx
and edi, ecx
shl edi, 1
add edx, ecx
mov ecx, edx
xor ecx, edi
xor edi, 0xffffffff
and edx, edi
shl edx, 1
sub edx, ecx
add dl, 1
mov byte [ebx + eax], dl
add eax, 1
jmp 0x410ae3
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov dword [esp + 4], ebx
call fcn.00401880
add esp, 8
mov ebx, eax
mov eax, dword [esi + 0x2dc]
mov al, byte [eax]
mov byte [esi + 0x160], al
mov ecx, dword [esi + 0x94]
mov byte [ecx], 0x16
mov byte [ecx + 1], 0x8f
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 6
jne 0x410b81
xor eax, eax
mov edi, dword [esi + 4]
cmp eax, 6
jae 0x410bb8
mov ecx, dword [esi + 0x94]
mov cl, byte [ecx + eax]
mov dl, al
add dl, 0x5d
xor dl, cl
mov ecx, dword [esi + 0x94]
add dl, 0x2f
mov byte [ecx + eax], dl
add eax, 1
jmp 0x410b92
sub esp, 8
mov dword [esp + 4], ecx
mov eax, dword [esi]
mov dword [esp], eax
call fcn.00401880
add esp, 8
mov edx, ebx
test edx, edx
sete ch
mov dword [esi + 0x1b4], eax
test eax, eax
sete cl
or ch, cl
test ch, 1
jne 0x410be7
jmp 0x410bec
jmp 0x411501
sub esp, 4
mov dword [esp], edx
call fcn.00413b00
add esp, 4
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410c17
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408770
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x1e8], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040b170
add esp, 0x10
sub esp, 4
mov eax, dword [esi + 0x1b4]
mov dword [esp], eax
call fcn.00413b00
add esp, 4
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
mov ebx, dword [esi]
jne 0x410c87
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408770
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x1e4], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov eax, dword [esi + 0x1b4]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040b170
add esp, 0x10
mov eax, dword [esi + 0x2d8]
mov al, byte [eax]
mov byte [esi + 0x164], al
mov edi, dword [esi + 0x200]
mov byte [edi], 0x76
mov byte [edi + 1], 0xb
mov eax, 2
mov byte [edi + eax], 0
add eax, 1
cmp eax, 4
jne 0x410ce1
xor eax, eax
cmp eax, 4
jae 0x410d31
mov dl, byte [edi + eax]
movzx edi, dl
mov ecx, eax
add ecx, 0xc41af783
mov ebx, ecx
and ebx, edi
mov edi, dword [esi + 0x200]
shl ebx, 1
sub ecx, ebx
mov ebx, dword [esi]
add cl, dl
add cl, 0x71
mov byte [edi + eax], 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 0x410cef
sub esp, 8
mov dword [esp], ebx
mov dword [esp + 4], edi
call fcn.00401880
add esp, 8
mov edi, eax
mov dword [esi + 0x3c], 0
cmp edi, 0
je 0x410daf
sub esp, 4
mov dword [esp], edi
call fcn.00413b00
add esp, 4
mov ebx, eax
sub ebx, 0xffffffff
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410d7c
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408770
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x3c], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040b170
add esp, 0x10
mov ebx, dword [esi]
mov eax, dword [esi + 0x2d4]
mov al, byte [eax]
mov byte [esi + 0x168], al
mov ecx, dword [esi + 0x90]
mov byte [ecx], 0xee
mov byte [ecx + 1], 0x9b
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 5
jne 0x410dcf
xor eax, eax
cmp eax, 5
jae 0x410e2b
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0x9b
mov edi, edx
shl edi, 1
xor edi, 0xffffffff
add edi, edx
and ecx, edi
mov edi, eax
add edi, 0x9b
mov ebx, eax
add ebx, 0x9b
or edi, ebx
mov ebx, dword [esi]
xor edi, 0xffffffff
and edx, edi
or ecx, edx
add cl, 0xf9
mov edx, dword [esi + 0x90]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x90]
add eax, 1
jmp 0x410ddd
sub esp, 8
mov dword [esp], ebx
mov dword [esp + 4], ecx
call fcn.00401880
add esp, 8
mov dword [esi + 0x68], 0
cmp eax, 0
je 0x410ebd
sub esp, 4
mov dword [esi + 0x248], eax
mov dword [esp], eax
call fcn.00413b00
add esp, 4
mov edi, eax
sub edi, 0xc3dc9d7e
add edi, 1
add edi, 0xc3dc9d7e
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410e86
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408770
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x68], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov eax, dword [esi + 0x248]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040b170
add esp, 0x10
mov eax, dword [esi + 0x2d0]
mov al, byte [eax]
mov byte [esi + 0x16c], al
mov ecx, dword [esi + 0x8c]
mov byte [ecx], 0x70
mov byte [ecx + 1], 7
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 7
jne 0x410edd
xor eax, eax
cmp eax, 7
jae 0x410f1a
mov dl, byte [ecx + eax]
mov edi, eax
shl edi, 1
and edi, 2
mov ecx, eax
xor ecx, 1
add ecx, edi
xor cl, dl
add cl, 0xfb
mov edx, dword [esi + 0x8c]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x8c]
add eax, 1
jmp 0x410eeb
sub esp, 8
mov dword [esp], ebx
mov dword [esp + 4], ecx
call fcn.00401880
add esp, 8
mov ebx, eax
mov dword [esi + 0x64], 0
cmp ebx, 0
je 0x410f9f
sub esp, 4
mov dword [esp], ebx
call fcn.00413b00
add esp, 4
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 0x410f6e
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408770
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x64], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040b170
add esp, 0x10
mov eax, dword [esi + 0x2cc]
mov al, byte [eax]
mov byte [esi + 0x170], al
mov edx, dword [esi + 0x88]
mov byte [edx], 0xab
mov byte [edx + 1], 0xb7
mov byte [edx + 2], 0x4e
mov eax, 3
mov byte [edx + eax], 0
add eax, 1
cmp eax, 4
jne 0x410fc3
xor eax, eax
cmp eax, 4
jae 0x41102a
mov ecx, dword [esi + 0x88]
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0xd
and ecx, edx
mov ebx, ecx
and ebx, 0xfd
mov edi, ecx
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, ecx
and ebx, 2
or ecx, 2
imul ecx, ebx
add ecx, edi
mov ebx, eax
add ebx, 0xd
add ebx, edx
mov edx, dword [esi + 0x88]
sub ebx, ecx
add bl, 0xbf
mov byte [edx + eax], bl
mov ecx, eax
xor ecx, 1
shl eax, 1
and eax, 2
add eax, ecx
jmp 0x410fd1
sub esp, 8
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.00401ae0
add esp, 8
xor ecx, ecx
cmp eax, 0
mov edx, 0
je 0x4113d1
sub esp, 4
mov dword [esi + 0x5c], eax
mov dword [esp], eax
call fcn.00402030
add esp, 4
mov ecx, 0xc
mov dword [esi + 0x20], eax
mul ecx
seto cl
add eax, 4
setb ch
mov dl, cl
xor dl, 0xff
mov dh, ch
xor dh, 0xff
and cl, 0xff
and ch, 0xff
or cl, 0
or ch, 0
xor cl, ch
or dl, dh
xor dl, 0xff
and dl, 0xff
or cl, dl
mov edx, 0xffffffff
test cl, 1
jne 0x4110a1
mov edx, eax
sub esp, 4
mov dword [esp], edx
call fcn.00408770
add esp, 4
mov edi, eax
mov ecx, dword [esi + 0x20]
mov dword [edi], ecx
add edi, 4
cmp ecx, 0
mov dword [esi + 0x1c], edi
mov eax, dword [esi + 0x5c]
je 0x4110ea
mov eax, ecx
imul eax, eax, 0xc
mov ebx, edi
add ebx, eax
mov ecx, edi
call fcn.00413c80
add edi, 0xc
cmp edi, ebx
sete al
test al, 1
mov eax, dword [esi + 0x5c]
jne 0x4110e5
jmp 0x4110cd
mov ecx, dword [esi + 0x20]
jmp 0x4110ea
xor edx, edx
jmp 0x4110ee
cmp edx, ecx
jb 0x4110fa
mov edx, dword [esi + 0x1c]
jmp 0x4113d1
sub esp, 8
mov dword [esp], eax
mov dword [esi + 0x27c], edx
mov dword [esp + 4], edx
call fcn.00402040
add esp, 8
mov dword [esi + 0x34], eax
mov eax, dword [esi + 0x2c8]
mov al, byte [eax]
mov byte [esi + 0x174], al
mov edx, dword [esi + 0x1fc]
mov byte [edx], 0xab
mov byte [edx + 1], 0xa1
mov byte [edx + 2], 0xce
mov eax, 3
mov byte [edx + eax], 0
add eax, 1
cmp eax, 8
jne 0x411139
xor ecx, ecx
cmp ecx, 8
jae 0x411197
mov al, byte [edx + ecx]
mov byte [esi + 0xc], al
movzx ebx, al
mov eax, ecx
and eax, 0x1cd3eecd
mov edi, ecx
and edi, 0xe32c1132
xor edi, 0xe32c1133
sub eax, edi
mov edi, eax
and edi, ebx
shl edi, 1
mov edx, eax
add edx, ebx
xor edx, 0xffffffff
add edi, edx
mov edx, eax
and edx, edi
shl edx, 1
xor edx, 0xffffffff
add eax, edx
mov edx, dword [esi + 0x1fc]
add al, byte [esi + 0xc]
mov byte [edx + ecx], al
add ecx, 1
jmp 0x411147
sub esp, 8
mov eax, dword [esi + 0x34]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.00401880
add esp, 8
mov dword [esi + 0x278], eax
mov eax, dword [esi + 0x2c4]
mov al, byte [eax]
mov byte [esi + 0x178], al
mov ecx, dword [esi + 0x84]
mov byte [ecx], 0x5d
mov byte [ecx + 1], 0x4b
mov byte [ecx + 2], 0xf2
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 7
jne 0x4111d6
xor eax, eax
cmp eax, 7
jae 0x41121d
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0x1c2ddd4
xor ecx, edx
add ecx, 0xf731aadb
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov edx, dword [esi + 0x84]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x84]
add eax, 1
jmp 0x4111e4
sub esp, 8
mov eax, dword [esi + 0x34]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401880
add esp, 8
mov dword [esi + 0x26c], eax
mov eax, dword [esi + 0x2c0]
mov al, byte [eax]
mov byte [esi + 0x17c], al
mov ecx, dword [esi + 0x1f8]
mov byte [ecx], 0x48
mov byte [ecx + 1], 0x4f
mov byte [ecx + 2], 0x4c
mov byte [ecx + 3], 0xe9
mov eax, 4
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 5
jne 0x411260
xor ebx, ebx
cmp ebx, 5
jae 0x4112e5
movzx eax, byte [ecx + ebx]
mov dword [esi + 0x22c], eax
mov ecx, ebx
add ecx, 0xe8f20757
mov edx, ebx
add edx, 0x57
and edx, eax
mov eax, edx
and eax, 0xfd
mov edi, edx
and edi, 2
xor edi, 2
imul edi, eax
mov eax, edx
and eax, 2
or edx, 2
imul edx, eax
add edx, edi
add ecx, dword [esi + 0x22c]
mov eax, ecx
xor eax, 0xffffffff
mov edi, edx
and edi, eax
xor edx, 0xffffffff
and ecx, edx
sub ecx, edi
mov edi, ecx
shl edi, 1
and edi, 2
mov edx, ecx
or edx, 1
add edx, 0x4c
and ecx, 1
add edx, edi
sub edx, ecx
mov ecx, dword [esi + 0x1f8]
mov byte [ecx + ebx], dl
add ebx, 1
jmp 0x41126e
sub esp, 8
mov eax, dword [esi + 0x34]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401c10
add esp, 8
xor ebx, ebx
cmp eax, 0
setg byte [esi + 0xe]
mov eax, dword [esi + 0x2bc]
mov al, byte [eax]
mov byte [esi + 0x180], al
mov eax, dword [esi + 0x80]
mov byte [eax], 0xb1
mov byte [eax + 1], 0xa0
mov byte [eax + 2], 0xaf
mov byte [eax + 3], 0xd9
xor eax, eax
cmp eax, 4
jae 0x411356
mov edi, dword [esi + 0x80]
movzx edx, byte [edi + eax]
mov ecx, eax
add ecx, 0x4ad2494f
xor ecx, edx
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, 0x74
add edx, ecx
mov byte [edi + eax], dl
add eax, 1
jmp 0x411328
sub esp, 8
mov eax, dword [esi + 0x34]
mov dword [esp], eax
mov eax, dword [esi + 0x80]
mov dword [esp + 4], eax
call fcn.00401c10
add esp, 8
xor edx, edx
cmp eax, 0
setg dl
mov edi, dword [esi + 0x27c]
imul eax, edi, 0xc
mov ecx, dword [esi + 0x1c]
add ecx, eax
sub esp, 0x10
mov eax, dword [esi + 0x278]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x26c]
mov dword [esp], eax
and edx, 1
mov dword [esp + 0xc], edx
mov al, byte [esi + 0xe]
mov bl, al
and ebx, 1
mov dword [esp + 8], ebx
call fcn.00413ca0
mov edx, edi
add edx, 0x8f44fbd5
add edx, 1
sub edx, 0x8f44fbd5
mov ecx, dword [esi + 0x20]
mov eax, dword [esi + 0x5c]
jmp 0x4110ee
mov dword [esi + 0x1c], edx
mov dword [esi + 0x20], ecx
mov edi, dword [esi + 0x2b8]
mov eax, dword [esi + 0x1e4]
mov dword [edi], eax
mov eax, dword [esi + 0x1e8]
mov dword [edi + 4], eax
mov eax, dword [esi + 0x3c]
mov dword [edi + 8], eax
mov eax, dword [esi + 0x68]
mov dword [edi + 0xc], eax
mov eax, dword [esi + 0x64]
mov dword [edi + 0x10], eax
sub esp, 4
mov ebx, dword [esi + 0x1f4]
mov ecx, ebx
mov dword [esp], 2
call fcn.00409510
sub esp, 0x10
mov dword [esp], ebx
mov dword [esp + 4], edi
mov edi, dword [esi + 0x1c]
mov dword [esp + 8], edi
mov eax, dword [esi + 0x20]
mov dword [esp + 0xc], eax
call fcn.00414330
add esp, 0x10
mov ecx, ebx
call fcn.00409fe0
mov ecx, edi
cmp ecx, 0
je 0x411479
mov ebx, ecx
add ebx, 0xfffffffc
imul eax, dword [ecx - 4], 0xc
mov edi, ecx
add edi, eax
cmp ecx, edi
je 0x41146b
jmp 0x411458
add edi, 0xfffffff4
mov ecx, edi
call fcn.00413e20
mov ecx, dword [esi + 0x1c]
cmp edi, ecx
jne 0x411458
jmp 0x41146b
sub esp, 4
mov dword [esp], ebx
call fcn.00408780
add esp, 4
jmp 0x41147b
sub esp, 4
mov eax, dword [esi + 0x1e4]
mov dword [esp], eax
call fcn.00408780
add esp, 4
mov edi, dword [esi + 4]
jmp 0x411494
jmp 0x411496
sub esp, 4
mov eax, dword [esi + 0x1e8]
mov dword [esp], eax
call fcn.00408780
add esp, 4
cmp dword [esi + 0x3c], 0
sete al
jmp 0x4114b3
test al, 1
jne 0x4114ca
jmp 0x4114b9
sub esp, 4
mov eax, dword [esi + 0x3c]
mov dword [esp], eax
call fcn.00408780
add esp, 4
mov eax, dword [esi + 0x68]
cmp eax, 0
je 0x4114e0
sub esp, 4
mov dword [esp], eax
call fcn.00408780
add esp, 4
mov eax, dword [esi + 0x64]
cmp eax, 0
je 0x4114f6
sub esp, 4
mov dword [esp], eax
call fcn.00408780
add esp, 4
mov ecx, dword [esi + 0x1f4]
call fcn.004095f0
jmp 0x411b0e
mov eax, dword [esi + 0x2b4]
mov al, byte [eax]
mov byte [esi + 0x184], al
mov byte [ecx], 0x3c
mov byte [ecx + 1], 0x8b
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 5
jne 0x411520
xor eax, eax
cmp eax, 5
jae 0x41155b
movzx edx, byte [ecx + eax]
mov edi, eax
add edi, 0x1e9b0263
mov ecx, edi
or ecx, edx
and edi, edx
add ecx, 0x6a
sub ecx, edi
add cl, 0xa7
mov edx, dword [esi + 0x7c]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x7c]
add eax, 1
jmp 0x41152e
sub esp, 8
mov dword [esp], ebx
mov dword [esp + 4], ecx
call fcn.00401880
add esp, 8
mov dword [esi + 0x1b8], eax
mov eax, dword [esi + 0x2b0]
mov al, byte [eax]
mov byte [esi + 0x188], al
mov ecx, dword [esi + 0x78]
mov byte [ecx], 0x9a
mov byte [ecx + 1], 0x2b
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 6
jne 0x411590
xor eax, eax
cmp eax, 6
jae 0x4115ce
movzx edx, byte [ecx + eax]
mov edi, eax
add edi, 0x87
mov ecx, eax
add ecx, 0x87
and ecx, edx
or edi, edx
xor ecx, edi
add cl, 0x5d
mov edx, dword [esi + 0x78]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x78]
add eax, 1
jmp 0x41159e
sub esp, 8
mov dword [esp + 4], ecx
mov dword [esp], ebx
call fcn.00401880
add esp, 8
mov edi, eax
mov edx, dword [esi + 0x1b8]
test edx, edx
sete al
test edi, edi
sete cl
or al, cl
test al, 1
jne 0x4115fa
jmp 0x411602
mov edi, dword [esi + 4]
jmp 0x411b0c
sub esp, 4
mov dword [esp], edx
call fcn.00413b00
add esp, 4
mov ebx, eax
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41162d
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408770
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x1dc], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x1b8]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040b170
add esp, 0xc
mov dword [esp], edi
call fcn.00413b00
add esp, 4
mov ebx, eax
sub ebx, 0xffffffff
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41168f
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408770
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x1d8], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040b170
add esp, 0x10
mov eax, dword [esi + 0x2ac]
mov al, byte [eax]
mov byte [esi + 0x18c], al
mov ecx, dword [esi + 0x74]
mov byte [ecx], 0x33
mov byte [ecx + 1], 0x3f
mov byte [ecx + 2], 0x86
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 8
jne 0x4116e4
xor eax, eax
cmp eax, 8
jae 0x4117a2
movzx edx, byte [ecx + eax]
mov dword [esi + 0x23c], edx
mov ecx, edx
xor ecx, 0xffffffff
shl ecx, 1
add ecx, edx
mov ebx, 0x1ffffffe
sub ebx, ecx
mov dword [esi + 0x18], eax
mov eax, 0x17cd31e
sub eax, dword [esi + 0x18]
add ecx, 1
mov edx, dword [esi + 0x18]
add edx, 0xde832ce1
mov dword [esi + 0x1a8], edx
mov edi, ecx
and edi, 0xe40ad834
and ebx, 0x1bf527cb
mov edx, dword [esi + 0x1a8]
and edx, 0xe40ad834
and eax, 0x1bf527cb
or edi, ebx
or edx, eax
xor edi, edx
or ecx, dword [esi + 0x1a8]
mov ebx, 0x1e
sub ebx, dword [esi + 0x18]
and ebx, dword [esi + 0x23c]
xor edi, 0xffffffff
and ecx, edi
or ebx, ecx
mov eax, ebx
shl eax, 1
and eax, 2
mov ecx, ebx
or ecx, 1
add ecx, 0x9a
and ebx, 1
sub ecx, ebx
add ecx, eax
mov eax, dword [esi + 0x74]
mov edx, dword [esi + 0x18]
mov byte [eax + edx], cl
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x74]
add eax, 1
jmp 0x4116f2
sub esp, 8
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401ae0
add esp, 8
cmp eax, 0
setne cl
xor edi, edi
test cl, 1
mov ebx, 0
jne 0x4117ce
jmp 0x411a2e
sub esp, 4
mov dword [esi + 0x1cc], eax
mov dword [esp], eax
call fcn.00402030
add esp, 4
mov ebx, eax
mov ecx, 8
mov eax, ebx
mul ecx
seto cl
add eax, 4
setb dl
mov ch, dl
xor ch, 0xff
mov dh, cl
xor dh, 0xff
and ch, dh
or cl, dl
xor cl, 0xff
xor cl, 0xff
xor ch, 0xff
and cl, ch
mov edx, 0xffffffff
test cl, 1
jne 0x41181b
mov edx, eax
sub esp, 4
mov dword [esp], edx
call fcn.00408770
add esp, 4
mov edi, eax
mov dword [edi], ebx
add edi, 4
cmp ebx, 0
mov dword [esi + 0x14], edi
mov dword [esi + 0x38], ebx
je 0x41185c
mov eax, ebx
shl eax, 3
mov ebx, edi
add ebx, eax
jmp 0x411846
mov ecx, edi
call fcn.00413e50
add edi, 8
cmp edi, ebx
jne 0x411846
mov edi, dword [esi + 0x14]
mov ebx, dword [esi + 0x38]
jmp 0x41185c
xor edx, edx
mov ecx, dword [esi + 0x1cc]
jmp 0x411866
cmp edx, ebx
setb al
test al, 1
jne 0x411876
jmp 0x411871
jmp 0x411a2e
sub esp, 8
mov dword [esp], ecx
mov dword [esi + 0x274], edx
mov dword [esp + 4], edx
call fcn.00402040
add esp, 8
mov edi, eax
mov eax, dword [esi + 0x2a8]
mov al, byte [eax]
mov byte [esi + 0x190], al
mov ecx, dword [esi + 0x70]
mov byte [ecx], 0xab
mov byte [ecx + 1], 0xa1
mov byte [ecx + 2], 0xe
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 6
jne 0x4118b1
xor eax, eax
cmp eax, 6
jae 0x4118ef
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0x43a02cbd
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, 0x4e
add ecx, edx
mov edx, dword [esi + 0x70]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x70]
add eax, 1
jmp 0x4118bf
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], ecx
call fcn.00401880
add esp, 8
mov dword [esi + 0x258], eax
mov eax, dword [esi + 0x2a4]
mov al, byte [eax]
mov byte [esi + 0x194], al
mov ecx, dword [esi + 0x6c]
mov byte [ecx], 0x1b
mov byte [ecx + 1], 0xed
mov byte [ecx + 2], 0x66
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 6
jne 0x411928
xor eax, eax
cmp eax, 6
jae 0x4119e2
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0x18fbeee9
mov ebx, 0x27041116
sub ebx, eax
and ebx, 0x3897fcac
mov dword [esi + 0x270], edi
mov edi, ecx
and edi, 0xc7680353
or ebx, edi
xor ebx, edx
xor ebx, ecx
xor ebx, 0x3897fcac
and ebx, ecx
mov dword [esi + 0x1ac], eax
mov eax, ebx
and eax, 2
xor eax, 2
mov edi, ebx
and edi, 0xfffffffd
imul edi, eax
mov eax, ebx
and eax, 2
or ebx, 2
imul ebx, eax
add ebx, edi
mov edi, dword [esi + 0x270]
add ebx, 0x6ae410ea
sub ecx, ebx
mov ebx, dword [esi + 0x38]
add ecx, 0x6ae410ea
add ecx, edx
mov edx, 1
sub edx, ecx
and edx, 1
xor edx, 1
or ecx, 1
add ecx, 0x72
add ecx, edx
mov eax, dword [esi + 0x6c]
mov edx, dword [esi + 0x1ac]
mov byte [eax + edx], cl
mov eax, dword [esi + 0x1ac]
mov ecx, dword [esi + 0x6c]
add eax, 1
jmp 0x411936
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], ecx
call fcn.00401880
add esp, 8
mov edi, dword [esi + 0x274]
mov edx, edi
shl edx, 3
mov ecx, dword [esi + 0x14]
add ecx, edx
sub esp, 8
mov dword [esp], eax
mov eax, dword [esi + 0x258]
mov dword [esp + 4], eax
call fcn.00413e60
add edi, 1
mov edx, edi
mov edi, dword [esi + 0x14]
mov ecx, dword [esi + 0x1cc]
jmp 0x411a29
jmp 0x411866
mov dword [esi + 0x38], ebx
mov dword [esi + 0x14], edi
sub esp, 4
mov edi, dword [esi + 0x1f0]
mov ecx, edi
mov dword [esp], 3
call fcn.00409510
sub esp, 0x14
mov dword [esp], edi
mov eax, dword [esi + 0x1dc]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1d8]
mov dword [esp + 8], eax
mov ebx, dword [esi + 0x14]
mov dword [esp + 0xc], ebx
mov eax, dword [esi + 0x38]
mov dword [esp + 0x10], eax
call fcn.0041a950
add esp, 0x14
mov ecx, edi
call fcn.00409fe0
mov ecx, ebx
cmp ecx, 0
sete al
test al, 1
mov edi, dword [esi + 4]
jne 0x411ad1
jmp 0x411a93
mov ebx, ecx
add ebx, 0xfffffffc
mov eax, dword [ecx - 4]
shl eax, 3
mov edi, ecx
add edi, eax
cmp ecx, edi
sete al
test al, 1
jne 0x411ac0
jmp 0x411aad
jmp 0x411aaf
add edi, 0xfffffff8
mov ecx, edi
call fcn.00413f30
cmp edi, dword [esi + 0x14]
jne 0x411aaf
jmp 0x411ac0
sub esp, 4
mov dword [esp], ebx
call fcn.00408780
add esp, 4
mov edi, dword [esi + 4]
jmp 0x411ad3
sub esp, 4
mov eax, dword [esi + 0x1dc]
mov dword [esp], eax
call fcn.00408780
add esp, 4
jmp 0x411ae9
jmp 0x411aeb
jmp 0x411aed
sub esp, 4
mov eax, dword [esi + 0x1d8]
mov dword [esp], eax
call fcn.00408780
add esp, 4
mov ecx, dword [esi + 0x1f0]
call fcn.004095f0
jmp 0x411b0e
mov ecx, dword [esi + 0x1ec]
jmp 0x411b16
xor eax, eax
sub eax, ecx
add eax, 0xffffffff
xor ebx, ebx
sub ebx, eax
jmp 0x40ef55
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret