Function at 0x40f95b
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x388
mov esi, esp
call fcn.00413c20
sub esp, 8
mov eax, esp
push eax
mov ecx, esp
sub esp, 8
mov dword [esi + 0xc8], esp
push eax
mov dword [esi + 0x368], esp
sub esp, 8
mov dword [esi + 0xc4], esp
push eax
mov dword [esi + 0x364], esp
sub esp, 8
mov dword [esi + 0x360], esp
push eax
mov dword [esi + 0x35c], esp
sub esp, 8
mov dword [esi + 0xc0], esp
push eax
mov dword [esi + 0x358], esp
sub esp, 8
mov dword [esi + 0xbc], esp
push eax
mov dword [esi + 0x354], esp
sub esp, 8
mov dword [esi + 0x21c], esp
push eax
mov dword [esi + 0x350], esp
sub esp, 8
mov dword [esi + 0x34], esp
push eax
mov dword [esi + 0x34c], esp
sub esp, 8
mov dword [esi + 0x218], esp
push eax
mov dword [esi + 0x348], esp
push eax
mov dword [esi + 0x214], esp
push eax
mov dword [esi + 0x344], esp
sub esp, 8
mov dword [esi + 0x210], esp
push eax
mov dword [esi + 0x340], esp
push eax
mov dword [esi + 0xb8], esp
push eax
mov dword [esi + 0x33c], esp
sub esp, 8
mov dword [esi + 0xb4], esp
push eax
mov dword [esi + 0x338], esp
sub esp, 8
mov dword [esi + 0xb0], esp
push eax
mov dword [esi + 0x334], esp
sub esp, 8
mov dword [esi + 0xac], esp
push eax
mov dword [esi + 0x330], esp
push eax
mov dword [esi + 0x20c], esp
sub esp, 0x88
mov edx, esp
and edx, 0xfffffff8
mov dword [esi + 0xa8], edx
mov esp, edx
push eax
push eax
mov dword [esi + 0x32c], esp
push eax
mov dword [esi + 0x328], esp
sub esp, 8
mov dword [esi + 0xa4], esp
push eax
mov dword [esi + 0x324], esp
sub esp, 8
mov dword [esi + 0xa0], esp
push eax
mov dword [esi + 0x320], esp
sub esp, 8
mov dword [esi + 0x9c], esp
push eax
mov dword [esi + 0x31c], esp
sub esp, 8
mov dword [esi + 0x208], esp
push eax
mov dword [esi + 0x318], esp
sub esp, 8
mov dword [esi + 0x98], esp
push eax
mov dword [esi + 0x314], esp
sub esp, 8
mov dword [esi + 0x94], esp
push eax
mov dword [esi + 0x310], esp
sub esp, 8
mov dword [esi + 0x204], esp
push eax
mov dword [esi + 0x30c], esp
sub esp, 8
mov dword [esi + 0x90], esp
push eax
mov dword [esi + 0x308], esp
sub esp, 8
mov dword [esi + 0x8c], esp
push eax
mov dword [esi + 0x304], esp
sub esp, 8
mov dword [esi + 0x30], esp
push eax
mov dword [esi + 0x300], esp
sub esp, 8
mov dword [esi + 0x88], esp
push eax
mov dword [esi + 0x2fc], esp
sub esp, 0x10
mov dword [esi + 0x20], esp
push eax
mov dword [esi + 0x84], esp
sub esp, 8
mov dword [esi + 0x80], esp
push eax
mov dword [esi + 0x2f8], esp
sub esp, 0x88
mov edi, esp
and edi, 0xfffffff8
mov dword [esi + 0x7c], edi
mov esp, edi
push eax
push eax
mov dword [esi + 0x200], esp
push eax
mov dword [esi + 0x2f4], esp
sub esp, 8
mov dword [esi + 0x78], esp
push eax
mov dword [esi + 0x2f0], esp
sub esp, 8
mov dword [esi + 0x74], esp
push eax
mov dword [esi + 0x2ec], esp
push eax
mov edi, esp
push eax
mov dword [esi + 0x2e4], esp
push eax
mov dword [esi + 0x70], esp
push eax
mov dword [esi + 0x2e0], esp
sub esp, 8
mov dword [esi + 0x6c], esp
push eax
mov dword [esi + 0x2dc], esp
push eax
mov dword [esi + 0x68], esp
push eax
mov dword [esi + 0x2d8], esp
sub esp, 8
mov dword [esi + 0x64], esp
push eax
mov dword [esi + 0x2d4], esp
sub esp, 8
mov dword [esi + 0x60], esp
push eax
mov dword [esi + 0x2d0], esp
sub esp, 8
mov dword [esi + 0x5c], esp
push eax
mov dword [esi + 0x2cc], esp
sub esp, 0x14
mov dword [esi + 0x2c8], esp
sub esp, 0x88
mov ebx, esp
and ebx, 0xfffffff8
mov dword [esi + 0x1fc], ebx
mov esp, ebx
push eax
push eax
mov ebx, esp
push eax
mov dword [esi + 0x2c4], esp
sub esp, 8
mov dword [esi + 0x54], esp
push eax
mov dword [esi + 0x2c0], esp
push eax
mov dword [esi + 0x50], esp
push eax
mov dword [esi + 0x2bc], esp
push eax
mov dword [esi + 0x4c], esp
push eax
mov dword [esi + 0x2b8], esp
sub esp, 8
mov dword [esi + 0x48], esp
push eax
mov dword [esi + 0x2b4], esp
sub esp, 0x88
mov edx, esp
and edx, 0xfffffff8
mov dword [esi + 0x1f8], edx
mov esp, edx
mov cl, byte [ecx]
mov byte [esi + 0xcc], cl
mov byte [eax], 0x31
mov byte [eax + 1], 0x8b
mov ecx, 2
mov byte [eax + ecx], 0
add ecx, 1
cmp ecx, 8
jne 0x40ebc5
mov dword [esi + 0x58], ebx
mov dword [esi + 0x2e8], edi
xor ecx, ecx
cmp ecx, 8
jae 0x40ec18
movzx edi, byte [eax + ecx]
mov edx, ecx
add edx, 0x42cc08e3
mov ebx, edx
and ebx, edi
shl ebx, 1
sub edx, ebx
add edx, edi
add edx, 0xb203d390
mov edi, edx
xor edi, 0x7e
mov ebx, edx
or ebx, 1
and ebx, edi
shl ebx, 1
xor edx, 1
add edx, ebx
mov byte [eax + ecx], dl
add ecx, 1
jmp 0x40ebdc
sub esp, 8
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401b20
add esp, 8
mov edi, eax
cmp edi, 0
sete al
test al, 1
jne 0x40ec3b
jmp 0x40ec42
xor eax, eax
jmp 0x4118b8
xor ebx, ebx
jmp 0x40ec46
sub esp, 4
mov dword [esp], edi
call fcn.00402070
add esp, 4
cmp ebx, eax
setb al
test al, 1
jne 0x40ec66
jmp 0x40ec5f
mov al, 1
jmp 0x4118b8
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], ebx
call fcn.00402080
add esp, 8
mov dword [esi + 4], eax
mov eax, dword [esi + 0x368]
mov al, byte [eax]
mov byte [esi + 0xd0], al
mov edx, dword [esi + 0xc8]
mov byte [edx], 0xb0
mov byte [edx + 1], 0xdb
mov eax, 2
mov byte [edx + eax], 0
add eax, 1
cmp eax, 7
jne 0x40ec9b
mov dword [esi + 0x2ac], ebx
mov dword [esi + 0x2b0], edi
xor eax, eax
cmp eax, 7
jae 0x40ed0c
movzx edi, byte [edx + eax]
mov edx, eax
add edx, 0xd04b24cf
mov ecx, 0x30
sub ecx, eax
mov ebx, 0x30
sub ebx, eax
and ecx, ebx
or edx, edi
xor edi, 0xffffffff
or ecx, edi
and ecx, edx
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, 0xf4
add edx, ecx
mov ecx, dword [esi + 0xc8]
mov byte [ecx + eax], dl
mov edx, dword [esi + 0xc8]
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40ecb5
sub esp, 0xc
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 3
call fcn.00401f50
add esp, 0xc
cmp eax, 0
setne al
xor al, 0xff
and al, 1
or al, 0
test al, 1
mov ebx, dword [esi + 0x360]
jne 0x40ed41
jmp 0x40ed46
jmp 0x4118a4
mov eax, dword [esi + 0x364]
mov al, byte [eax]
mov byte [esi + 0xd4], al
mov ecx, dword [esi + 0xc4]
mov byte [ecx], 0x5c
mov byte [ecx + 1], 0xc9
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 7
jne 0x40ed66
xor eax, eax
jmp 0x40ed76
cmp eax, 7
jae 0x40edc7
movzx edx, byte [ecx + eax]
mov edi, eax
shl edi, 1
and edi, 0x8b871d64
mov ecx, eax
xor ecx, 0x45c38eb2
add ecx, edi
xor ecx, edx
mov edx, ecx
add edx, 0xa32e3685
mov edi, edx
shl edi, 1
and edi, 2
shl edx, 1
and edx, 2
add ecx, 0x86
add ecx, edi
sub ecx, edx
mov edx, dword [esi + 0xc4]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0xc4]
add eax, 1
jmp 0x40ed76
jmp 0x40edc9
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.004019f0
add esp, 8
jmp 0x40ede0
jmp 0x40ede2
fnstcw word [esi + 0x2e]
movzx eax, word [esi + 0x2e]
or eax, 0xc00
mov word [esi + 0x19e], ax
fldcw word [esi + 0x19e]
fistp dword [esi + 0x37c]
fldcw word [esi + 0x2e]
mov eax, dword [esi + 0x37c]
mov ecx, eax
sub ecx, 3
ja 0x4118a2
mov eax, dword [eax*4 + 0x43f2bc]
jmp eax
mov eax, dword [esi + 0x35c]
mov al, byte [eax]
mov byte [esi + 0xd8], al
mov byte [ebx], 0x94
mov byte [ebx + 1], 0x2b
mov eax, 2
mov byte [ebx + eax], 0
add eax, 1
cmp eax, 5
jne 0x40ee38
xor eax, eax
cmp eax, 5
jae 0x40ee8b
movzx edx, byte [ebx + eax]
mov ecx, eax
add ecx, 0x4194eb47
xor ecx, edx
mov edi, ecx
shl edi, 1
mov edx, 2
sub edx, edi
and edx, 2
xor edx, 2
mov edi, ecx
shl edi, 1
and edi, 2
sub ecx, edi
add ecx, 0xb817679d
mov edi, ecx
and edi, edx
shl edi, 1
xor ecx, edx
add ecx, edi
mov byte [ebx + eax], cl
add eax, 1
jmp 0x40ee46
sub esp, 0xc
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], 2
call fcn.00401f50
add esp, 0xc
cmp eax, 0
je 0x40f282
mov eax, dword [esi + 0x358]
mov al, byte [eax]
mov byte [esi + 0xdc], al
mov ecx, dword [esi + 0xc0]
mov byte [ecx], 0x97
mov byte [ecx + 1], 0x9b
mov byte [ecx + 2], 0x9a
mov byte [ecx + 3], 0x99
mov eax, 4
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 6
jne 0x40eed9
xor edi, edi
cmp edi, 6
jae 0x40ef7c
mov eax, dword [esi + 0xc0]
movzx ecx, byte [eax + edi]
mov edx, edi
shl edx, 1
and edx, 0xa50c1e36
mov dword [esi + 0x1b0], edi
mov edi, dword [esi + 0x1b0]
xor edi, 0x52860f1b
add edi, edx
mov edx, edi
and edx, ecx
mov eax, edx
and eax, 0xfd
mov ebx, edx
and ebx, 2
xor ebx, 2
imul ebx, eax
mov eax, edx
and eax, 2
or edx, 2
imul edx, eax
add edx, ebx
sub edx, edi
mov eax, ecx
xor eax, 0xffffffff
mov edi, edx
and edi, eax
xor edx, 0xffffffff
and ecx, edx
sub ecx, edi
mov edi, dword [esi + 0x1b0]
mov eax, ecx
shl eax, 1
and eax, 0xf0
mov edx, ecx
xor edx, 0x78
add edx, eax
and ecx, 1
or edx, 1
add edx, ecx
mov ecx, dword [esi + 0xc0]
mov byte [ecx + edi], dl
add edi, 1
jmp 0x40eee7
mov eax, dword [ecx]
mov dword [esi + 0x264], eax
mov eax, dword [esi + 0x354]
mov cl, byte [eax]
mov byte [esi + 0xe0], cl
mov eax, dword [esi + 0xbc]
mov byte [eax], 0xd3
mov byte [eax + 1], 0x47
mov ecx, 2
mov byte [eax + ecx], 0
add ecx, 1
cmp ecx, 8
jne 0x40efa4
xor ecx, ecx
cmp ecx, 8
jae 0x40f048
movzx edi, byte [eax + ecx]
xor edx, edx
sub edx, ecx
mov ebx, edx
shl ebx, 1
and ebx, 0x9f96231e
xor edx, 0x3034ee70
add edx, 1
sub edx, ebx
xor edx, edi
mov edi, edx
shl edi, 1
and edi, 0x1deeaf94
xor edx, 0xef757ca
add edx, edi
mov ebx, edx
xor ebx, 0xfffffffe
mov edi, edx
or edi, 1
and edi, ebx
mov eax, edi
and eax, 0xfffffffd
mov ebx, edi
and ebx, 2
xor ebx, 2
imul ebx, eax
mov eax, edi
and eax, 2
or edi, 2
imul edi, eax
add edi, ebx
mov eax, edx
and eax, edi
or edx, edi
xor edx, 1
add edx, eax
mov eax, dword [esi + 0xbc]
mov byte [eax + ecx], dl
add ecx, 0x759d1365
mov eax, ecx
xor eax, 0x759d1364
shl ecx, 1
and ecx, 0x16
sub ecx, eax
mov eax, dword [esi + 0xbc]
jmp 0x40efb2
sub esp, 0xc
mov ecx, dword [esi + 4]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov eax, dword [esi + 0x264]
mov dword [esp + 8], eax
call fcn.00401f50
add esp, 0xc
cmp eax, 0
je 0x40f282
mov eax, dword [esi + 0x350]
mov al, byte [eax]
mov byte [esi + 0xe4], al
mov edx, dword [esi + 0x21c]
mov byte [edx], 0xfa
mov byte [edx + 1], 0x6b
mov eax, 2
mov byte [edx + eax], 0
add eax, 1
cmp eax, 6
jne 0x40f090
xor eax, eax
cmp eax, 6
jae 0x40f0f5
movzx ecx, byte [edx + eax]
mov edi, ecx
xor edi, 0xffffffff
mov edx, eax
add edx, 0xd2b52997
and edx, edi
mov edi, eax
add edi, 0x97
mov ebx, eax
add ebx, 0x97
and edi, ebx
xor edi, 0xffffffff
and ecx, edi
or ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x18
xor ecx, 0xc
add ecx, edx
mov edx, dword [esi + 0x21c]
add cl, 1
mov byte [edx + eax], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40f09e
sub esp, 0xc
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 2
call fcn.00401f50
add esp, 0xc
cmp eax, 0
je 0x40f282
mov eax, dword [esi + 0x34c]
mov al, byte [eax]
mov byte [esi + 0xe8], al
mov ecx, dword [esi + 0x34]
mov byte [ecx], 0xac
mov byte [ecx + 1], 0x31
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 7
jne 0x40f138
xor eax, eax
cmp eax, 7
jae 0x40f194
mov ecx, dword [esi + 0x34]
movzx ecx, byte [ecx + eax]
mov edx, eax
and edx, 0x7e10fc34
xor edx, 0x7e10fc34
mov edi, eax
and edi, 0x81ef03cb
sub edi, edx
xor edi, ecx
mov ecx, edi
add ecx, 0x22
mov edx, 0x1d
sub edx, edi
and edx, 0x1f
and ecx, 0xe0
sub ecx, edx
add cl, 1
mov edx, dword [esi + 0x34]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x34]
add eax, 1
jmp 0x40f146
sub esp, 0xc
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 3
call fcn.00401f50
add esp, 0xc
cmp eax, 0
je 0x40f282
mov eax, dword [esi + 0x348]
mov al, byte [eax]
mov byte [esi + 0xec], al
mov ecx, dword [esi + 0x218]
mov byte [ecx], 0xc2
mov byte [ecx + 1], 0xf6
mov byte [ecx + 2], 0x76
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 5
jne 0x40f1de
xor eax, eax
cmp eax, 5
jae 0x40f249
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0x2f059112
mov edi, ecx
xor edi, 0xc6f863fc
shl ecx, 1
and ecx, 0x720f3806
sub ecx, edi
xor ecx, edx
mov edx, ecx
and edx, 0x841e16f
xor edx, 0x841e16f
and ecx, 0xf7be1e90
sub ecx, edx
mov edi, ecx
xor edi, 0xfe
mov edx, ecx
or edx, 1
and edx, edi
or ecx, 1
add edx, ecx
mov ecx, dword [esi + 0x218]
mov byte [ecx + eax], dl
add eax, 1
jmp 0x40f1ec
sub esp, 0xc
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 3
call fcn.00401f50
add esp, 0xc
cmp eax, 0
setne al
and al, al
xor al, 0xff
xor al, 0xff
or al, 0
and al, 0xff
xor al, 0xff
test al, 1
jne 0x4118a2
jmp 0x40f287
jmp 0x4118a2
mov eax, dword [esi + 0x344]
mov al, byte [eax]
mov byte [esi + 0xf0], al
mov ebx, dword [esi + 0x214]
mov byte [ebx], 0x70
mov byte [ebx + 1], 0xe1
mov eax, 2
mov byte [ebx + eax], 0
add eax, 1
cmp eax, 4
jne 0x40f2a7
xor eax, eax
cmp eax, 4
jae 0x40f2f8
mov cl, byte [ebx + eax]
mov ebx, eax
add ebx, 0x58
mov edi, eax
add edi, 0x58
and ebx, 0x90
or edi, 0x90
mov edx, 0xa7
sub edx, eax
xor ebx, 0xffffffff
or edx, ebx
mov ebx, dword [esi + 0x214]
and edx, edi
xor dl, cl
xor dl, 0x6f
mov cl, 0x47
sub cl, dl
mov byte [ebx + eax], cl
add eax, 1
jmp 0x40f2b5
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ebx
call fcn.004018c0
add esp, 8
mov dword [esi + 0x1e0], eax
mov eax, dword [esi + 0x340]
mov al, byte [eax]
mov byte [esi + 0xf4], al
mov ecx, dword [esi + 0x210]
mov byte [ecx], 0xa3
mov byte [ecx + 1], 0x4f
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 8
jne 0x40f333
xor eax, eax
cmp eax, 8
jae 0x40f393
movzx edx, byte [ecx + eax]
mov edi, eax
and edi, 0x1f554373
xor edi, 0x1f554373
mov ecx, eax
and ecx, 0xe0aabc8c
sub ecx, edi
xor ecx, edx
mov ebx, ecx
shl ebx, 1
and ebx, 0x7c
mov edi, ecx
xor edi, 0x9caa513e
mov edx, edi
add edx, ebx
shl ecx, 1
and ecx, 2
and edi, ecx
or edx, ecx
mov ecx, dword [esi + 0x210]
xor edx, 1
add edx, edi
mov byte [ecx + eax], dl
add eax, 1
jmp 0x40f341
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401b20
add esp, 8
mov ebx, eax
mov eax, dword [esi + 0x33c]
mov al, byte [eax]
mov byte [esi + 0xf8], al
mov ecx, dword [esi + 0xb8]
mov byte [ecx], 0x96
mov byte [ecx + 1], 0x1f
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 4
jne 0x40f3ca
xor eax, eax
cmp eax, 4
jae 0x40f40e
movzx edx, byte [ecx + eax]
mov edi, eax
add edi, 0xc5
mov ecx, eax
add ecx, 0xc5
and ecx, edx
or edi, edx
xor ecx, edi
add cl, 0x27
mov edx, dword [esi + 0xb8]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0xb8]
add eax, 1
jmp 0x40f3d8
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.004018c0
add esp, 8
mov dword [esi + 0x1d4], eax
mov eax, dword [esi + 0x338]
mov al, byte [eax]
mov byte [esi + 0xfc], al
mov ecx, dword [esi + 0xb4]
mov byte [ecx], pe_nt_image_headers32
mov byte [ecx + 1], 0x1f
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 5
jne 0x40f449
xor eax, eax
cmp eax, 5
jae 0x40f4a6
movzx edi, byte [ecx + eax]
mov edx, 0xbde27cfa
sub edx, eax
mov ecx, 0xbde27cfa
sub ecx, eax
and edx, ecx
or edx, edi
mov ecx, 0xfa
sub ecx, eax
and ecx, edi
xor edx, 0xffffffff
or ecx, edx
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, 0xe6
add ecx, edx
mov edx, dword [esi + 0xb4]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0xb4]
add eax, 1
jmp 0x40f457
sub esp, 8
mov dword [esp + 4], ecx
mov eax, dword [esi + 4]
mov dword [esp], eax
call fcn.004019f0
add esp, 8
fnstcw word [esi + 0x2c]
movzx eax, word [esi + 0x2c]
or eax, 0xc00
mov word [esi + 0x19c], ax
fldcw word [esi + 0x19c]
fistp dword [esi + 0x370]
fldcw word [esi + 0x2c]
mov eax, dword [esi + 0x370]
mov dword [esi + 0x294], eax
mov eax, dword [esi + 0x334]
mov al, byte [eax]
mov byte [esi + 0x100], al
mov ecx, dword [esi + 0xb0]
mov byte [ecx], 0xaa
mov byte [ecx + 1], 0xba
mov byte [ecx + 2], 0x4e
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 6
jne 0x40f50d
xor eax, eax
cmp eax, 6
jae 0x40f555
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0x8d
mov edi, edx
xor edi, 0xffffffff
and ecx, edi
mov edi, 0x72
sub edi, eax
and edi, edx
or ecx, edi
add cl, 0x3f
mov edx, dword [esi + 0xb0]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0xb0]
add eax, 1
jmp 0x40f51b
sub esp, 8
mov dword [esp + 4], ecx
mov eax, dword [esi + 4]
mov dword [esp], eax
call fcn.004019f0
add esp, 8
fnstcw word [esi + 0x2a]
movzx eax, word [esi + 0x2a]
or eax, 0xc00
mov word [esi + 0x19a], ax
fldcw word [esi + 0x19a]
fistp dword [esi + 0x36c]
fldcw word [esi + 0x2a]
mov eax, dword [esi + 0x36c]
mov dword [esi + 0x290], eax
mov eax, dword [esi + 0x330]
mov al, byte [eax]
mov byte [esi + 0x104], al
mov ecx, dword [esi + 0xac]
mov byte [ecx], 0x6a
mov byte [ecx + 1], 0x73
mov byte [ecx + 2], 6
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 6
jne 0x40f5bc
xor eax, eax
cmp eax, 6
jae 0x40f625
movzx edx, byte [ecx + eax]
mov edi, 0xf961c1fe
sub edi, eax
mov ecx, 0xf961c1fe
sub ecx, eax
and ecx, edi
mov edi, ecx
shl edi, 1
xor edi, 0xffffffff
add ecx, edi
and ecx, edx
xor edx, 0xffffffff
mov edi, eax
add edi, 1
or edi, edx
sub edi, eax
add edi, 0xf961c1ff
or edi, ecx
mov ecx, edi
xor ecx, 6
add ecx, 1
shl edi, 1
or edi, 0xd
sub ecx, edi
mov edx, dword [esi + 0xac]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0xac]
add eax, 1
jmp 0x40f5ca
mov dword [esi + 0x1ec], ebx
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401c50
add esp, 8
cmp eax, 0
setg byte [esi + 0x17]
sub esp, 4
mov eax, dword [esi + 0x1e0]
mov dword [esp], eax
call fcn.00413770
add esp, 4
mov ebx, eax
mov dword [esi + 0x1b4], ebx
sub ebx, 0xffffffff
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f67e
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408a60
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 + 0x1e0]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040b270
add esp, 0x10
xor eax, eax
sub esp, 0x18
mov dword [esp], 0
mov dword [esp + 4], edi
mov eax, dword [esi + 0x1b4]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov ebx, dword [esi + 0x20c]
mov dword [esp + 0x14], ebx
call dword [0x44961c]
mov eax, dword [ebx]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f706
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408a60
add esp, 4
mov ecx, dword [0x44961c]
mov dword [esi + 0x228], ecx
mov ebx, dword [esi + 0x20c]
mov ecx, dword [ebx]
xor edx, edx
sub esp, 0x18
mov dword [esp], 0
mov dword [esp + 4], edi
mov edx, dword [esi + 0x1b4]
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.00408a70
add esp, 4
mov ebx, dword [esi + 0x1ec]
sub esp, 4
mov eax, dword [esi + 0x1d4]
mov dword [esp], eax
call fcn.00413770
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 0x40f79f
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408a60
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x1c0], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov eax, dword [esi + 0x1d4]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040b270
add esp, 0xc
mov ecx, dword [esi + 0xa8]
mov dword [esp], 1
call fcn.00409690
xor edi, edi
jmp 0x40f7ef
sub esp, 4
mov dword [esp], ebx
call fcn.00402070
add esp, 4
cmp edi, eax
setb al
test al, 1
jne 0x40f80d
jmp 0x40f808
jmp 0x40f918
sub esp, 8
mov dword [esp], ebx
mov dword [esi + 0x1b8], edi
mov dword [esp + 4], edi
call fcn.00402050
add esp, 8
sub esp, 4
mov dword [esp], eax
call fcn.004019d0
add esp, 4
mov edi, eax
cmp edi, 0
sete al
test al, 1
jne 0x40f841
jmp 0x40f84c
mov edi, dword [esi + 0x1b8]
jmp 0x40f910
sub esp, 4
mov dword [esp], edi
call fcn.00413770
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 0x40f877
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408a60
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov edi, eax
mov dword [esp + 0xc], 0
call fcn.0040b270
sub esp, 0xc
mov eax, dword [esi + 0x294]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x290]
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 + 0xa8]
mov dword [esp], eax
xor eax, eax
mov cl, byte [esi + 0x17]
mov al, cl
and eax, 1
mov dword [esp + 0x18], eax
call fcn.0041c2a0
add esp, 0x1c
sub esp, 4
mov dword [esp], edi
call fcn.00408a70
add esp, 4
mov ebx, dword [esi + 0x1ec]
mov edi, dword [esi + 0x1b8]
jmp 0x40f90e
jmp 0x40f910
sub edi, 0xffffffff
jmp 0x40f7ef
sub esp, 4
mov eax, dword [esi + 0x1c0]
mov dword [esp], eax
call fcn.00408a70
add esp, 4
jmp 0x40f92e
sub esp, 4
mov eax, dword [esi + 0x1c8]
mov dword [esp], eax
call fcn.00408a70
add esp, 4
mov edi, dword [esi + 0xa8]
mov ecx, edi
call fcn.0040a0c0
mov ecx, edi
call fcn.00409770
jmp 0x4118a2
mov eax, dword [esi + 0x328]
mov al, byte [eax]
mov byte [esi + 0x108], al
mov edi, dword [esi + 0x32c]
mov byte [edi], 0x43
mov byte [edi + 1], 0x39
mov eax, 2
mov byte [edi + eax], 0
add eax, 1
cmp eax, 7
jne 0x40f97b
xor eax, eax
cmp eax, 7
jae 0x40f9b6
movzx ecx, byte [edi + eax]
mov edx, eax
add edx, 0x36
and edx, ecx
shl edx, 1
add ecx, eax
add ecx, 0x72
sub ecx, edx
add cl, 0xb6
mov byte [edi + eax], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40f989
sub esp, 0xc
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], 2
call fcn.00401f50
add esp, 0xc
cmp eax, 0
je 0x40fcdf
mov eax, dword [esi + 0x324]
mov al, byte [eax]
mov byte [esi + 0x10c], al
mov ecx, dword [esi + 0xa4]
mov byte [ecx], 0x40
mov byte [ecx + 1], 0xf1
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 8
jne 0x40f9fc
xor eax, eax
cmp eax, 8
jae 0x40fa30
mov ecx, dword [esi + 0xa4]
mov cl, byte [ecx + eax]
mov dl, al
add dl, 0x54
xor dl, cl
mov ecx, dword [esi + 0xa4]
add dl, 0x5c
mov byte [ecx + eax], dl
add eax, 1
jmp 0x40fa0a
sub esp, 0xc
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 2
call fcn.00401f50
add esp, 0xc
cmp eax, 0
je 0x40fcdf
mov eax, dword [esi + 0x320]
mov al, byte [eax]
mov byte [esi + 0x110], al
mov ecx, dword [esi + 0xa0]
mov byte [ecx], 0xa3
mov byte [ecx + 1], 0x4f
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 6
jne 0x40fa76
xor eax, eax
cmp eax, 6
jae 0x40fac7
movzx edi, byte [ecx + eax]
mov edx, 0x9aa59ff2
sub edx, eax
or edx, edi
mov ecx, 0xf2
sub ecx, eax
and ecx, edi
xor edx, 0xffffffff
or ecx, edx
mov edx, ecx
xor edx, 0x42
shl ecx, 1
and ecx, 0x7a
sub ecx, edx
add cl, 1
mov edx, dword [esi + 0xa0]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0xa0]
add eax, 1
jmp 0x40fa84
sub esp, 0xc
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 5
call fcn.00401f50
add esp, 0xc
cmp eax, 0
setne al
test al, 1
jne 0x40faf3
jmp 0x40fcdf
mov eax, dword [esi + 0x31c]
mov al, byte [eax]
mov byte [esi + 0x114], al
mov ecx, dword [esi + 0x9c]
mov byte [ecx], 0x7e
mov byte [ecx + 1], 7
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 6
jne 0x40fb13
xor eax, eax
cmp eax, 6
jae 0x40fb47
mov ecx, dword [esi + 0x9c]
mov cl, byte [ecx + eax]
mov dl, al
add dl, 0x81
xor dl, cl
mov ecx, dword [esi + 0x9c]
add dl, 0x7b
mov byte [ecx + eax], dl
add eax, 1
jmp 0x40fb21
sub esp, 0xc
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 2
call fcn.00401f50
add esp, 0xc
cmp eax, 0
je 0x40fcdf
mov eax, dword [esi + 0x318]
mov al, byte [eax]
mov byte [esi + 0x118], al
mov ecx, dword [esi + 0x208]
mov byte [ecx], 0x18
mov byte [ecx + 1], 0xe7
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 5
jne 0x40fb8d
xor edx, edx
cmp edx, 5
jae 0x40fc0c
movzx ecx, byte [ecx + edx]
mov edi, ecx
xor edi, 0xffffffff
mov eax, ecx
shl eax, 1
xor eax, 0xffffffff
add eax, ecx
or eax, edi
mov edi, eax
shl edi, 1
xor edi, 0xffffffff
add eax, edi
mov ebx, edx
add ebx, 0xa9
mov edi, eax
and edi, ebx
mov dword [esi + 0x230], edi
mov ebx, 0x56
sub ebx, edx
mov edi, edx
mov edx, 0x56
sub edx, edi
and ebx, edx
and ebx, ecx
mov edx, edi
add edx, 0xa9
mov ecx, eax
xor ecx, edx
mov edx, edi
sub ecx, eax
add ecx, dword [esi + 0x230]
or ebx, ecx
mov ecx, dword [esi + 0x208]
add bl, 0xb3
mov byte [ecx + edx], bl
add edx, 1
jmp 0x40fb9b
sub esp, 0xc
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 3
call fcn.00401f50
add esp, 0xc
cmp eax, 0
je 0x40fcdf
mov eax, dword [esi + 0x314]
mov al, byte [eax]
mov byte [esi + 0x11c], al
mov ecx, dword [esi + 0x98]
mov byte [ecx], 0xea
mov byte [ecx + 1], 0xfa
mov byte [ecx + 2], 0x4e
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 7
jne 0x40fc56
xor eax, eax
cmp eax, 7
jae 0x40fcb0
movzx edx, byte [ecx + eax]
mov edi, eax
and edi, 0x265a5eeb
xor edi, 0x265a5eeb
mov ecx, eax
and ecx, 0xd9a5a114
sub ecx, edi
add ecx, 0x3a5bb5d8
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, 0x5e
add ecx, edx
mov edx, dword [esi + 0x98]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x98]
add eax, 1
jmp 0x40fc64
sub esp, 0xc
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 3
call fcn.00401f50
add esp, 0xc
cmp eax, 0
setne al
xor al, 0xff
test al, 1
jne 0x4118a2
jmp 0x40fce4
jmp 0x4118a2
mov eax, dword [esi + 0x310]
mov al, byte [eax]
mov byte [esi + 0x120], al
mov edx, dword [esi + 0x94]
mov byte [edx], 0x73
mov byte [edx + 1], 0x99
mov eax, 2
mov byte [edx + eax], 0
add eax, 1
cmp eax, 8
jne 0x40fd04
xor eax, eax
cmp eax, 8
jae 0x40fd4e
mov ecx, dword [esi + 0x94]
mov bl, byte [ecx + eax]
mov edx, eax
and edx, 0xda
mov edi, eax
and edi, 0x25
mov ecx, eax
xor ecx, 0xda
add ecx, eax
sub ecx, edi
add ecx, edx
xor cl, bl
mov edx, dword [esi + 0x94]
add cl, 0xbe
mov byte [edx + eax], cl
add eax, 1
jmp 0x40fd12
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.004018c0
add esp, 8
mov dword [esi + 0x1e8], eax
mov eax, dword [esi + 0x30c]
mov al, byte [eax]
mov byte [esi + 0x124], al
mov edx, dword [esi + 0x204]
mov byte [edx], 0xac
mov byte [edx + 1], 0x1b
mov eax, 2
mov byte [edx + eax], 0
add eax, 1
cmp eax, 7
jne 0x40fd89
xor eax, eax
cmp eax, 7
jae 0x40fe0e
mov cl, byte [edx + eax]
mov byte [esi + 0x15], cl
movzx edx, cl
mov dword [esi + 0x224], edx
mov ecx, eax
add ecx, 0x7b
mov ebx, 0x34bfdf84
sub ebx, eax
or ebx, edx
mov edi, 0x84
sub edi, eax
mov edx, 0x84
sub edx, eax
or edi, edx
and edi, dword [esi + 0x224]
xor ebx, 0xffffffff
or edi, ebx
mov edx, edi
shl edx, 1
xor edx, 0xffffffff
add edi, edx
mov edx, eax
add edx, 0x7c
mov ebx, 4
sub ebx, eax
or ebx, edi
add ebx, edx
mov edx, dword [esi + 0x204]
shl ebx, 1
sub ecx, ebx
add cl, byte [esi + 0x15]
add cl, 0x99
mov byte [edx + eax], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40fd97
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.004018c0
add esp, 8
mov ebx, eax
mov eax, dword [esi + 0x308]
mov al, byte [eax]
mov byte [esi + 0x128], al
mov ecx, dword [esi + 0x90]
mov byte [ecx], 0xd
mov byte [ecx + 1], 0x99
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 8
jne 0x40fe45
xor eax, eax
cmp eax, 8
jae 0x40fe90
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0x270ee526
xor ecx, edx
mov edx, ecx
xor edx, 0x3e
mov edi, ecx
or edi, 0x41
and edi, edx
shl edi, 1
xor ecx, 0x41
add ecx, edi
add cl, 1
mov edx, dword [esi + 0x90]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x90]
add eax, 1
jmp 0x40fe53
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401b20
add esp, 8
mov ecx, eax
mov eax, dword [esi + 0x304]
mov al, byte [eax]
mov byte [esi + 0x12c], al
mov edx, dword [esi + 0x8c]
mov byte [edx], 0xb6
mov byte [edx + 1], 0x3f
mov eax, 2
mov byte [edx + eax], 0
add eax, 1
cmp eax, 6
jne 0x40fec7
mov dword [esi + 0x298], ebx
mov dword [esi + 0x2a8], ecx
xor eax, eax
cmp eax, 6
jae 0x40ff39
movzx edi, byte [edx + eax]
mov edx, 0xac7f614a
sub edx, eax
or edx, edi
mov ecx, 0x4a
sub ecx, eax
and ecx, edi
xor edx, 0xffffffff
or ecx, edx
mov edx, ecx
and edx, 0x76
mov edi, ecx
and edi, 0x89
mov ebx, ecx
xor ebx, 0x76
add ecx, ebx
sub ecx, edi
add edx, ecx
add dl, 1
mov ecx, dword [esi + 0x8c]
mov byte [ecx + eax], dl
mov edx, dword [esi + 0x8c]
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40fee1
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.004018c0
add esp, 8
mov ebx, eax
mov eax, dword [esi + 0x300]
mov al, byte [eax]
mov byte [esi + 0x130], al
mov ecx, dword [esi + 0x30]
mov byte [ecx], 0xa4
mov byte [ecx + 1], 9
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 8
jne 0x40ff6d
xor eax, eax
cmp eax, 8
jae 0x40ff9e
mov ecx, dword [esi + 0x30]
mov cl, byte [ecx + eax]
mov dl, 1
sub dl, al
xor dl, cl
mov cl, 9
sub cl, dl
mov edx, dword [esi + 0x30]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x30]
add eax, 1
jmp 0x40ff7b
sub esp, 8
mov dword [esp + 4], ecx
mov eax, dword [esi + 4]
mov dword [esp], eax
call fcn.004019f0
add esp, 8
fnstcw word [esi + 0x28]
movzx eax, word [esi + 0x28]
or eax, 0xc00
mov word [esi + 0x198], ax
fldcw word [esi + 0x198]
fistp dword [esi + 0x378]
fldcw word [esi + 0x28]
mov eax, dword [esi + 0x378]
mov dword [esi + 0x2a4], eax
mov eax, dword [esi + 0x2fc]
mov al, byte [eax]
mov byte [esi + 0x134], al
mov ecx, dword [esi + 0x88]
mov byte [ecx], 0xee
mov byte [ecx + 1], 0xe2
mov byte [ecx + 2], 0x72
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 6
jne 0x410005
xor eax, eax
cmp eax, 6
jae 0x410065
movzx edx, byte [ecx + eax]
mov ecx, 0xa65bb493
sub ecx, eax
mov edi, 0xa65bb493
sub edi, eax
and edi, ecx
or edi, edx
xor edi, 0xffffffff
mov ecx, 0x93
sub ecx, eax
and ecx, edx
or ecx, edi
mov edx, ecx
shl edx, 1
and edx, 0xc6
xor ecx, 0xe3
add ecx, edx
add cl, 1
mov edx, dword [esi + 0x88]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x88]
add eax, 1
jmp 0x410013
sub esp, 8
mov dword [esp + 4], ecx
mov eax, dword [esi + 4]
mov dword [esp], eax
call fcn.004019f0
add esp, 8
fnstcw word [esi + 0x26]
movzx eax, word [esi + 0x26]
or eax, 0xc00
mov word [esi + 0x196], ax
fldcw word [esi + 0x196]
fistp dword [esi + 0x374]
fldcw word [esi + 0x26]
mov eax, dword [esi + 0x374]
mov dword [esi + 0x29c], eax
mov dword [esi + 0x2a0], ebx
sub esp, 4
mov eax, dword [esi + 0x1e8]
mov dword [esp], eax
call fcn.00413770
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 0x4100df
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408a60
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 + 0x1e8]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040b270
add esp, 0xc
mov ecx, dword [esi + 0x20]
mov dword [esp], ebx
call fcn.004137f0
jmp 0x410122
sub esp, 4
mov dword [esp], ebx
call fcn.00408a70
add esp, 4
jmp 0x410132
sub esp, 4
mov ecx, dword [esi + 0x20]
mov dword [esp], 0x400
call fcn.00435c50
cmp eax, 0
jge 0x41014e
jmp 0x410904
mov eax, dword [esi + 0x84]
mov dword [eax], 0
mov eax, dword [esi + 0x20]
mov eax, dword [eax]
mov dword [esi + 0x274], eax
mov al, byte [esi + 0x138]
mov byte [esi + 0x194], al
mov byte [esi + 0x13c], 0x3b
mov byte [esi + 0x13d], 0x3a
mov byte [esi + 0x13e], 0x35
mov byte [esi + 0x13f], 0x34
mov eax, 4
mov byte [esi + eax + 0x13c], 0
add eax, 1
cmp eax, 7
jne 0x410192
xor ecx, ecx
cmp ecx, 7
jae 0x410240
movzx eax, byte [esi + ecx + 0x13c]
mov dword [esi + 0x244], eax
mov ebx, ecx
add ebx, 0x7034aa76
xor eax, 0xffffffff
mov edx, ebx
and edx, eax
mov dword [esi + 0x23c], edx
mov edi, 0x8fcb5589
sub edi, ecx
and edi, 0xde281012
and ebx, 0x21d7efed
or edi, ebx
mov eax, 0x89
sub eax, ecx
mov ebx, edi
xor ebx, 0x12
mov dword [esi + 0x1a8], ecx
mov ecx, dword [esi + 0x1a8]
add ecx, 0x7034aa76
mov edx, ecx
and edx, 0x20
and eax, 0xdf
or edx, eax
xor edi, edx
or ebx, ecx
mov ecx, dword [esi + 0x1a8]
xor edi, 0x32
and ebx, edi
xor ebx, 0xffffffff
mov eax, dword [esi + 0x244]
and eax, ebx
or eax, dword [esi + 0x23c]
add al, 0xb2
mov byte [esi + ecx + 0x13c], al
add ecx, 1
jmp 0x4101a4
mov ebx, dword [esi + 0x13c]
xor edi, edi
mov ecx, 2
cmp edi, dword [0x449620]
jb 0x41025a
jmp 0x4102f1
mov eax, ebx
mov edx, dword [0x449624]
cmp dword [edx + edi*8], 0xae6e2b0b
sete bl
xor ecx, ecx
mov byte [esi + 0x14], bl
test bl, 1
jne 0x41027a
mov ebx, eax
jmp 0x4102e1
mov edx, dword [edx + edi*8 + 4]
mov ecx, 2
mov ebx, eax
cmp edx, ebx
je 0x4102e1
mov eax, dword [0x449628]
xor ecx, ecx
sub esp, 0x20
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 5
mov eax, dword [esi + 0x274]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov eax, dword [esi + 0x84]
mov dword [esp + 0x1c], eax
call fcn.00438b80
add esp, 0x20
mov dword [esi + 0x24c], eax
mov ecx, 1
test byte [esi + 0x14], 1
je 0x4102e9
jmp 0x4102f1
add edi, 1
jmp 0x410248
cmp ecx, 2
je 0x4102fc
mov ebx, dword [esi + 0x24c]
mov dword [esi + 0x280], ebx
mov eax, dword [esi + 0x2f8]
mov al, byte [eax]
mov byte [esi + 0x144], al
mov ecx, dword [esi + 0x80]
mov byte [ecx], 0x10
mov byte [ecx + 1], 0xb
mov byte [ecx + 2], 0xa
mov byte [ecx + 3], 0xc9
mov eax, 4
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 8
jne 0x41032a
xor edi, edi
cmp edi, 8
jae 0x4103a3
movzx edx, byte [ecx + edi]
mov ecx, edi
and ecx, 0x19e05f01
mov ebx, edi
and ebx, 2
xor ebx, 2
mov eax, edi
and eax, 0x19e05f01
imul ebx, eax
mov eax, edi
and eax, 2
or ecx, 2
imul ecx, eax
add ecx, ebx
mov eax, edi
xor eax, 0x19e05f03
add ecx, eax
mov eax, ecx
and eax, edx
shl eax, 1
sub ecx, eax
add ecx, edx
mov eax, ecx
shl eax, 1
and eax, 0xe0
xor ecx, 0xf0
add ecx, eax
add cl, 1
mov eax, dword [esi + 0x80]
mov byte [eax + edi], cl
mov ecx, dword [esi + 0x80]
add edi, 1
jmp 0x410338
mov eax, dword [ecx]
mov ecx, dword [esi + 0x280]
jmp 0x4103ad
cmp ecx, eax
jne 0x410904
mov edi, dword [esi + 0x84]
mov eax, dword [edi]
xor ecx, ecx
sub ecx, eax
add ecx, 0xfffffffe
xor eax, eax
sub eax, ecx
sub esp, 4
mov dword [esp], eax
call fcn.004358e0
add esp, 4
mov dword [esi + 0x3c], eax
mov ecx, dword [edi]
mov eax, ecx
and eax, 2
or ecx, 2
add ecx, eax
mov dword [esi + 0x27c], ecx
mov eax, dword [esi + 0x20]
mov eax, dword [eax]
mov dword [esi + 0x278], eax
mov al, byte [esi + 0x148]
mov byte [esi + 0x190], al
mov byte [esi + 0x14c], 0x3b
mov byte [esi + 0x14d], 0x3a
mov byte [esi + 0x14e], 0x35
mov byte [esi + 0x14f], 0x34
mov eax, 4
mov byte [esi + eax + 0x14c], 0
add eax, 1
cmp eax, 7
jne 0x410423
xor ecx, ecx
cmp ecx, 7
jae 0x4104d1
movzx eax, byte [esi + ecx + 0x14c]
mov dword [esi + 0x248], eax
mov edi, ecx
add edi, 0x7034aa76
xor eax, 0xffffffff
mov edx, edi
and edx, eax
mov dword [esi + 0x240], edx
mov ebx, 0x8fcb5589
sub ebx, ecx
and ebx, 0xde281012
and edi, 0x21d7efed
or ebx, edi
mov eax, 0x89
sub eax, ecx
mov edi, ebx
xor edi, 0x12
mov dword [esi + 0x1a4], ecx
mov ecx, dword [esi + 0x1a4]
add ecx, 0x7034aa76
mov edx, ecx
and edx, 0x20
and eax, 0xdf
or edx, eax
xor ebx, edx
or edi, ecx
mov ecx, dword [esi + 0x1a4]
xor ebx, 0x32
and edi, ebx
xor edi, 0xffffffff
mov eax, dword [esi + 0x248]
and eax, edi
or eax, dword [esi + 0x240]
add al, 0xb2
mov byte [esi + ecx + 0x14c], al
add ecx, 1
jmp 0x410435
mov edx, dword [esi + 0x14c]
xor ebx, ebx
mov ecx, 2
cmp ebx, dword [0x449620]
jb 0x4104eb
jmp 0x410588
mov dword [esi + 0x38], edx
mov edi, dword [0x449624]
cmp dword [edi + ebx*8], 0xae6e2b0b
sete dl
xor ecx, ecx
mov byte [esi + 0x13], dl
test dl, 1
jne 0x41050a
jmp 0x410569
mov edx, dword [edi + ebx*8 + 4]
mov ecx, 2
cmp edx, dword [esi + 0x38]
je 0x410569
mov eax, dword [0x449628]
xor ecx, ecx
sub esp, 0x20
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 5
mov eax, dword [esi + 0x278]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov eax, dword [esi + 0x3c]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x27c]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0
call fcn.00438b80
add esp, 0x20
mov ecx, 1
test byte [esi + 0x13], 1
je 0x410574
mov edx, dword [esi + 0x38]
jmp 0x410588
mov ecx, ebx
shl ecx, 1
and ecx, 2
xor ebx, 1
add ebx, ecx
mov edx, dword [esi + 0x38]
jmp 0x4104d9
cmp ecx, 2
je 0x41058f
mov edx, eax
cmp edx, 0
jl 0x4108f1
sub esp, 4
mov ebx, dword [esi + 0x298]
mov dword [esp], ebx
call fcn.00413770
add esp, 4
mov edi, eax
mov dword [esi + 0x258], edi
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4105cf
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408a60
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x26c], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040b270
add esp, 0x10
mov eax, dword [esi + 0x3c]
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 0x410644
mov cx, word [eax]
cmp cx, 0
setne dl
jmp 0x41062c
test dl, 1
jne 0x410633
jmp 0x410644
movzx ecx, cx
cmp ecx, 0x5c
jne 0x41063f
mov ebx, eax
jmp 0x410646
add eax, 0xfffffffe
jmp 0x41061c
jmp 0x410646
mov eax, dword [edi]
sub ebx, eax
sar ebx, 1
xor eax, eax
sub eax, dword [esi + 0x258]
mov ecx, ebx
sub 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 0x410679
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408a60
add esp, 4
mov ecx, dword [edi]
sub esp, 0xc
mov dword [esi + 0x250], eax
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
call fcn.00413820
add esp, 4
mov dword [esp], eax
mov edi, dword [esi + 0x26c]
mov dword [esp + 4], edi
call fcn.0040a5e0
add esp, 8
mov ebx, eax
sub esp, 4
mov dword [esp], edi
call fcn.00408a70
add esp, 4
xor eax, eax
mov edi, dword [esi + 0x250]
sub eax, edi
add ebx, eax
sar ebx, 1
xor ecx, ecx
sub ecx, ebx
add ecx, 0xffffffff
xor eax, eax
sub eax, ecx
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4106f9
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408a60
sub esp, 4
mov dword [esp], edi
mov dword [esi + 0x1c4], eax
mov dword [esp + 4], eax
call fcn.00433e40
add esp, 8
sub esp, 4
mov dword [esp], edi
call fcn.00408a70
add esp, 4
sub esp, 4
mov ebx, dword [esi + 0x2a0]
mov dword [esp], ebx
call fcn.00413770
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 0x41075b
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408a60
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.0040b270
add esp, 0xc
mov ecx, dword [esi + 0x7c]
mov dword [esp], 1
call fcn.00409690
xor ebx, ebx
sub esp, 4
mov edi, dword [esi + 0x2a8]
mov dword [esp], edi
call fcn.00402070
add esp, 4
cmp ebx, eax
jb 0x4107bd
jmp 0x4108b6
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], ebx
call fcn.00402050
add esp, 4
mov dword [esp], eax
call fcn.004019d0
add esp, 4
mov edi, eax
cmp edi, 0
jne 0x4107e6
jmp 0x4108ae
sub esp, 4
mov dword [esp], edi
call fcn.00413770
add esp, 4
sub eax, 0xffffffff
mov ecx, 2
mov dword [esi + 0x234], eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410813
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408a60
add esp, 4
mov dword [esi + 0x22c], eax
xor ecx, ecx
sub esp, 0x10
mov dword [esp], eax
mov eax, dword [esi + 0x234]
mov dword [esp + 4], eax
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040b270
add esp, 0x10
xor eax, eax
sub esp, 0x1c
mov eax, dword [esi + 0x7c]
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 + 0x22c]
mov edi, eax
mov dword [esp + 0xc], eax
mov eax, dword [esi + 0x29c]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x2a4]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
call fcn.0041c2a0
add esp, 0x1c
sub esp, 4
mov dword [esp], edi
call fcn.00408a70
add esp, 4
jmp 0x4108ac
jmp 0x4108ae
sub ebx, 0xffffffff
jmp 0x4107a0
sub esp, 4
mov eax, dword [esi + 0x1bc]
mov dword [esp], eax
call fcn.00408a70
add esp, 4
jmp 0x4108cc
sub esp, 4
mov eax, dword [esi + 0x1c4]
mov dword [esp], eax
call fcn.00408a70
add esp, 4
mov edi, dword [esi + 0x7c]
mov ecx, edi
call fcn.0040a0c0
mov ecx, edi
call fcn.00409770
sub esp, 4
mov eax, dword [esi + 0x3c]
mov dword [esp], eax
call fcn.00435950
add esp, 4
jmp 0x410904
mov ecx, dword [esi + 0x20]
call fcn.004138e0
jmp 0x4118a2
mov eax, dword [esi + 0x2f4]
mov al, byte [eax]
mov byte [esi + 0x154], al
mov ebx, dword [esi + 0x200]
mov byte [ebx], 0x3c
mov byte [ebx + 1], 0x8b
mov eax, 2
mov byte [ebx + eax], 0
add eax, 1
cmp eax, 6
jne 0x410931
xor eax, eax
cmp eax, 6
jae 0x4109cc
movzx edi, byte [ebx + eax]
mov dword [esi + 0x1ac], eax
mov edx, dword [esi + 0x1ac]
add edx, 0x645cf1a3
mov ecx, edx
and ecx, edi
mov eax, ecx
and eax, 0xfd
mov ebx, ecx
and ebx, 2
xor ebx, 2
imul ebx, eax
mov eax, ecx
and eax, 2
or ecx, 2
imul ecx, eax
add ecx, ebx
mov ebx, dword [esi + 0x200]
add edx, edi
sub ecx, edx
mov edi, ecx
shl edi, 1
and edi, 0xeba17060
mov edx, ecx
xor edx, 0xa2f47cf
sub edi, edx
shl edx, 1
and edx, 2
xor edx, 2
or edi, 1
and ecx, 1
mov eax, 1
sub eax, edi
or ecx, eax
xor ecx, 1
add ecx, edx
mov eax, dword [esi + 0x1ac]
mov byte [ebx + eax], cl
add eax, 1
jmp 0x41093f
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ebx
call fcn.004018c0
add esp, 8
mov ebx, eax
mov eax, dword [esi + 0x2f0]
mov al, byte [eax]
mov byte [esi + 0x158], al
mov ecx, dword [esi + 0x78]
mov byte [ecx], 0xf6
mov byte [ecx + 1], 0x4f
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 5
jne 0x410a00
xor eax, eax
jmp 0x410a10
cmp eax, 5
jae 0x410a64
movzx edx, byte [ecx + eax]
mov edi, eax
add edi, 0x1f6ceed
mov ecx, 0x3e093112
sub ecx, eax
and ecx, 0x3f7eba79
and edi, 0xc0814586
or ecx, edi
xor ecx, edx
xor ecx, 0x3f7eba79
add ecx, 0xf62df55e
mov edx, ecx
shl edx, 1
and edx, 0x30
xor ecx, 0x98
add ecx, edx
add cl, 0x69
mov edx, dword [esi + 0x78]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x78]
add eax, 1
jmp 0x410a10
jmp 0x410a66
sub esp, 8
mov dword [esp + 4], ecx
mov eax, dword [esi + 4]
mov dword [esp], eax
call fcn.004018c0
add esp, 8
mov edi, eax
test ebx, ebx
sete al
test edi, edi
sete cl
or al, cl
test al, 1
jne 0x410a8f
jmp 0x410a94
jmp 0x41137b
sub esp, 4
mov dword [esi + 0x268], ebx
mov dword [esp], ebx
call fcn.00413770
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 0x410ac5
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408a60
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x1f4], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x268]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040b270
add esp, 0xc
mov dword [esp], edi
call fcn.00413770
add esp, 4
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 0x410b30
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408a60
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x1f0], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040b270
add esp, 0x10
mov eax, dword [esi + 0x2ec]
mov al, byte [eax]
mov byte [esi + 0x15c], al
mov ecx, dword [esi + 0x74]
mov byte [ecx], 0xd6
mov byte [ecx + 1], 0x4b
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 5
jne 0x410b81
xor edx, edx
cmp edx, 5
jae 0x410c37
movzx eax, byte [ecx + edx]
mov dword [esi + 0x238], eax
mov ebx, edx
add ebx, 0x4adf6113
mov edi, 0xb5209eec
sub edi, edx
mov eax, 0xb5209eec
sub eax, edx
mov dword [esi + 0x1a0], eax
mov ecx, edi
and ecx, 0x45
mov eax, ebx
and eax, 0xba
mov dword [esi + 0x220], eax
mov eax, dword [esi + 0x1a0]
and eax, 0x45
and ebx, 0xba
or ecx, dword [esi + 0x220]
or eax, ebx
xor ecx, eax
or edi, dword [esi + 0x1a0]
xor edi, 0xffffffff
or ecx, edi
mov ebx, dword [esi + 0x238]
and ecx, ebx
mov eax, edx
add eax, 0x4adf6113
mov edi, edx
add edi, 0x4adf6113
and edi, eax
or edi, ebx
xor ecx, edi
mov eax, ecx
shl eax, 1
and eax, 0x40
mov edi, ecx
shl edi, 1
and edi, 0x40
add ecx, eax
sub ecx, edi
add cl, 0xa1
mov eax, dword [esi + 0x74]
mov byte [eax + edx], cl
mov ecx, dword [esi + 0x74]
add edx, 1
jmp 0x410b8f
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.004018c0
add esp, 8
mov edi, eax
mov dword [esi + 0x44], 0
cmp edi, 0
je 0x410cb6
sub esp, 4
mov dword [esp], edi
call fcn.00413770
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 0x410c85
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408a60
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x44], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040b270
add esp, 0x10
mov eax, dword [esi + 0x2e4]
mov al, byte [eax]
mov byte [esi + 0x160], al
mov edi, dword [esi + 0x2e8]
mov byte [edi], 0x16
mov byte [edi + 1], 0xbb
mov eax, 2
mov byte [edi + eax], 0
add eax, 1
cmp eax, 4
jne 0x410cd6
xor eax, eax
cmp eax, 4
jae 0x410cfe
mov cl, byte [edi + eax]
mov dl, al
add dl, 0x5f
xor dl, cl
add dl, 0x25
mov byte [edi + eax], dl
add eax, 1
jmp 0x410ce4
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], edi
call fcn.004018c0
add esp, 8
mov ebx, eax
mov dword [esi + 0x1c], 0
cmp ebx, 0
je 0x410d89
sub esp, 4
mov dword [esp], ebx
call fcn.00413770
add esp, 4
mov edi, eax
and edi, 1
or eax, 1
add edi, eax
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410d51
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408a60
add esp, 4
mov dword [esi + 0x1c], eax
jmp 0x410d64
xor eax, eax
sub esp, 0x10
mov eax, dword [esi + 0x1c]
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040b270
add esp, 0x10
jmp 0x410d89
mov eax, dword [esi + 0x2e0]
mov al, byte [eax]
mov byte [esi + 0x164], al
mov ecx, dword [esi + 0x70]
mov byte [ecx], 0xf0
mov byte [ecx + 1], 7
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 4
jne 0x410da6
xor eax, eax
cmp eax, 4
jae 0x410df5
movzx edi, byte [ecx + eax]
mov ecx, 0x3fbc8dbe
sub ecx, eax
or ecx, edi
mov edx, eax
add edx, 0x41
mov ebx, edi
shl ebx, 1
xor ebx, 0xffffffff
add ebx, edi
or edx, ebx
mov edi, ecx
shl edi, 1
xor edi, 0xffffffff
add ecx, edi
xor edx, 0xffffffff
or ecx, edx
add cl, 0xbb
mov edx, dword [esi + 0x70]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x70]
add eax, 1
jmp 0x410db4
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.004018c0
add esp, 8
mov edi, eax
mov dword [esi + 0x40], 0
cmp edi, 0
je 0x410e80
sub esp, 4
mov dword [esp], edi
call fcn.00413770
add esp, 4
mov ebx, eax
sub ebx, 0x34a07920
add ebx, 1
add ebx, 0x34a07920
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410e4f
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408a60
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x40], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040b270
add esp, 0x10
mov eax, dword [esi + 0x2dc]
mov al, byte [eax]
mov byte [esi + 0x168], al
mov ecx, dword [esi + 0x6c]
mov byte [ecx], 0x9f
mov byte [ecx + 1], 0x73
mov byte [ecx + 2], 0xfa
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 8
jne 0x410ea1
xor eax, eax
cmp eax, 8
jae 0x410f0b
mov ecx, dword [esi + 0x6c]
movzx ecx, byte [ecx + eax]
mov edx, eax
add edx, 0xc97e0dff
xor edx, ecx
mov ebx, edx
add ebx, 0x1089ba04
mov edi, ebx
xor edi, 0xfe
mov ecx, ebx
or ecx, 1
and ecx, edi
mov edi, 0xef7645fb
sub edi, edx
mov edx, edi
and edx, 0x9c
and ebx, 0x63
or edx, ebx
xor edx, 0x9d
and edi, 1
xor edi, 1
or edx, edi
add edx, ecx
mov ecx, dword [esi + 0x6c]
mov byte [ecx + eax], dl
add eax, 1
jmp 0x410eaf
sub esp, 8
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401b20
add esp, 8
xor ecx, ecx
cmp eax, 0
mov edi, 0
je 0x411253
sub esp, 4
mov dword [esi + 0x1d8], eax
mov dword [esp], eax
call fcn.00402070
add esp, 4
mov ecx, 0xc
mov dword [esi + 0x18], eax
mul ecx
seto cl
add eax, 4
setb dl
mov dh, cl
and dh, dl
xor cl, dl
or dh, cl
mov ecx, 0xffffffff
test dh, 1
jne 0x410f6b
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408a60
add esp, 4
mov edi, eax
mov ecx, dword [esi + 0x18]
mov dword [edi], ecx
add edi, 4
cmp ecx, 0
mov dword [esi + 0xc], edi
je 0x410faa
mov eax, ecx
imul eax, eax, 0xc
mov ebx, edi
add ebx, eax
mov ecx, edi
call fcn.004138f0
add edi, 0xc
cmp edi, ebx
jne 0x410f94
mov edi, dword [esi + 0xc]
mov ecx, dword [esi + 0x18]
jmp 0x410faa
xor edx, edx
mov eax, dword [esi + 0x1d8]
jmp 0x410fb4
cmp edx, ecx
jb 0x410fbd
jmp 0x411253
sub esp, 8
mov dword [esp], eax
mov dword [esi + 0x28c], edx
mov dword [esp + 4], edx
call fcn.00402080
add esp, 8
mov edi, eax
mov eax, dword [esi + 0x2d8]
mov al, byte [eax]
mov byte [esi + 0x16c], al
mov ecx, dword [esi + 0x68]
mov byte [ecx], 0xe5
mov byte [ecx + 1], 0x1b
mov byte [ecx + 2], 0xb6
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 4
jne 0x410ff8
xor eax, eax
mov dword [esi + 0x1d0], edi
cmp eax, 4
jae 0x411064
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0xf837939e
xor ecx, edx
mov edx, ecx
xor edx, 0x5915e216
mov edi, ecx
or edi, 0x26ea1de9
and edi, edx
shl edi, 1
xor ecx, 0x26ea1de9
add ecx, edi
mov edi, dword [esi + 0x1d0]
add ecx, 0xef72efa5
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
add cl, 0x5b
mov edx, dword [esi + 0x68]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x68]
add eax, 1
jmp 0x41100c
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], ecx
call fcn.004018c0
add esp, 8
mov dword [esi + 0x284], eax
mov eax, dword [esi + 0x2d4]
mov al, byte [eax]
mov byte [esi + 0x170], al
mov edx, dword [esi + 0x64]
mov byte [edx], 0xe5
mov byte [edx + 1], 0xcf
mov byte [edx + 2], 0x56
mov eax, 3
mov byte [edx + eax], 0
add eax, 1
cmp eax, 7
jne 0x41109d
xor eax, eax
cmp eax, 7
jae 0x4110d4
mov cl, byte [edx + eax]
mov dl, al
add dl, 0xee
xor dl, cl
add dl, 0x5a
mov ecx, dword [esi + 0x64]
mov byte [ecx + eax], dl
mov edx, dword [esi + 0x64]
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x4110ab
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], edx
call fcn.004018c0
add esp, 8
mov dword [esi + 0x270], eax
mov eax, dword [esi + 0x2d0]
mov al, byte [eax]
mov byte [esi + 0x174], al
mov ecx, dword [esi + 0x60]
mov byte [ecx], 0xfc
mov byte [ecx + 1], 0xe5
mov byte [ecx + 2], 0xf8
mov byte [ecx + 3], 0x57
mov eax, 4
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 5
jne 0x411111
xor eax, eax
cmp eax, 5
jae 0x41114f
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0x6e
and ecx, edx
xor edx, 0xffffffff
mov ebx, 0x91
sub ebx, eax
and ebx, edx
or ebx, ecx
mov cl, 0xd9
sub cl, bl
mov edx, dword [esi + 0x60]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x60]
add eax, 1
jmp 0x41111f
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], ecx
call fcn.00401c50
add esp, 8
cmp eax, 0
setg byte [esi + 0x16]
mov eax, dword [esi + 0x2cc]
mov al, byte [eax]
mov byte [esi + 0x178], al
mov ecx, dword [esi + 0x5c]
mov byte [ecx], 0xb7
mov byte [ecx + 1], 0x44
mov byte [ecx + 2], 0xb9
mov byte [ecx + 3], 0x37
mov eax, 4
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 6
jne 0x41118d
xor eax, eax
cmp eax, 6
jae 0x4111dc
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0xb6
mov edi, 0x49
sub edi, eax
mov ebx, 0x49
sub ebx, eax
and edi, ebx
or ecx, edx
xor edx, 0xffffffff
or edi, edx
and ecx, edi
mov edi, dword [esi + 0x1d0]
add cl, 0x72
mov edx, dword [esi + 0x5c]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x5c]
add eax, 1
jmp 0x41119b
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], ecx
call fcn.00401c50
add esp, 8
xor edx, edx
cmp eax, 0
setg dl
mov edi, dword [esi + 0x28c]
imul eax, edi, 0xc
mov ecx, dword [esi + 0xc]
add ecx, eax
sub esp, 0x10
mov eax, dword [esi + 0x284]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x270]
mov dword [esp], eax
and edx, 1
mov dword [esp + 0xc], edx
xor eax, eax
mov dl, byte [esi + 0x16]
mov al, dl
and eax, 1
mov dword [esp + 8], eax
call fcn.00413910
mov edx, edi
mov eax, edx
and eax, 1
shl eax, 1
xor edx, 1
add edx, eax
mov edi, dword [esi + 0xc]
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x1d8]
jmp 0x410fb4
mov dword [esi + 0x18], ecx
mov dword [esi + 0xc], edi
mov edi, dword [esi + 0x2c8]
mov eax, dword [esi + 0x1f0]
mov dword [edi], eax
mov eax, dword [esi + 0x1f4]
mov dword [edi + 4], eax
mov eax, dword [esi + 0x44]
mov dword [edi + 8], eax
mov eax, dword [esi + 0x1c]
mov dword [edi + 0xc], eax
mov eax, dword [esi + 0x40]
mov dword [edi + 0x10], eax
sub esp, 4
mov ebx, dword [esi + 0x1fc]
mov ecx, ebx
mov dword [esp], 2
call fcn.00409690
sub esp, 0x10
mov dword [esp], ebx
mov dword [esp + 4], edi
mov eax, dword [esi + 0xc]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x18]
mov dword [esp + 0xc], eax
call fcn.00413fa0
add esp, 0x10
mov ecx, ebx
call fcn.0040a0c0
mov ecx, dword [esi + 0xc]
cmp ecx, 0
je 0x4112fa
mov ebx, ecx
add ebx, 0xfffffffc
imul eax, dword [ecx - 4], 0xc
mov edi, ecx
add edi, eax
cmp ecx, edi
je 0x4112ec
jmp 0x4112db
add edi, 0xfffffff4
mov ecx, edi
call fcn.00413a90
cmp edi, dword [esi + 0xc]
jne 0x4112db
jmp 0x4112ec
sub esp, 4
mov dword [esp], ebx
call fcn.00408a70
add esp, 4
jmp 0x4112fc
sub esp, 4
mov eax, dword [esi + 0x1f0]
mov dword [esp], eax
call fcn.00408a70
add esp, 4
jmp 0x411312
sub esp, 4
mov eax, dword [esi + 0x1f4]
mov dword [esp], eax
call fcn.00408a70
add esp, 4
mov eax, dword [esi + 0x44]
cmp eax, 0
je 0x41133c
sub esp, 4
mov dword [esp], eax
call fcn.00408a70
add esp, 4
cmp dword [esi + 0x1c], 0
sete al
test al, 1
jne 0x41135a
jmp 0x411349
sub esp, 4
mov eax, dword [esi + 0x1c]
mov dword [esp], eax
call fcn.00408a70
add esp, 4
mov eax, dword [esi + 0x40]
cmp eax, 0
je 0x411370
sub esp, 4
mov dword [esp], eax
call fcn.00408a70
add esp, 4
mov ecx, dword [esi + 0x1fc]
call fcn.00409770
jmp 0x4118a2
mov eax, dword [esi + 0x2c4]
mov al, byte [eax]
mov byte [esi + 0x17c], al
mov ecx, dword [esi + 0x58]
mov byte [ecx], 0x8c
mov byte [ecx + 1], 0x1f
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 7
jne 0x41139d
xor eax, eax
cmp eax, 7
jae 0x411409
movzx edi, byte [ecx + eax]
mov edx, eax
add edx, 0x10647605
mov ecx, edi
and ecx, 0xa3
xor ecx, 0xc16fd0a3
mov ebx, edi
xor ebx, 0xc16fd0a3
or edi, 0x5c
and edi, ebx
mov ebx, 0x2f9b89fa
sub ebx, eax
and ebx, 0xc16fd0a3
and edx, 0x3e902f5c
or ecx, edi
or ebx, edx
mov edx, ebx
and edx, ecx
shl edx, 1
sub ebx, edx
add ebx, ecx
add bl, 0xe7
mov ecx, dword [esi + 0x58]
mov byte [ecx + eax], bl
mov ecx, dword [esi + 0x58]
add eax, 1
jmp 0x4113ab
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.004018c0
add esp, 8
mov ebx, eax
mov eax, dword [esi + 0x2c0]
mov al, byte [eax]
mov byte [esi + 0x180], al
mov ecx, dword [esi + 0x54]
mov byte [ecx], 0xca
mov byte [ecx + 1], 0x5b
mov eax, 2
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 6
jne 0x41143d
xor eax, eax
cmp eax, 6
jae 0x411480
movzx edi, byte [ecx + eax]
mov ecx, eax
add ecx, 0xef
mov edx, eax
add edx, 0x6f
and edx, edi
shl edx, 1
add ecx, edi
add ecx, 0x97
sub ecx, edx
add cl, 0xbe
mov edx, dword [esi + 0x54]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x54]
add eax, 1
jmp 0x41144b
sub esp, 8
mov dword [esp + 4], ecx
mov eax, dword [esi + 4]
mov dword [esp], eax
call fcn.004018c0
add esp, 8
mov edi, eax
test ebx, ebx
sete al
test edi, edi
sete cl
or al, cl
test al, 1
jne 0x4114a9
jmp 0x4114ae
jmp 0x4118a0
sub esp, 4
mov dword [esi + 0x260], ebx
mov dword [esp], ebx
call fcn.00413770
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 0x4114df
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408a60
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x1e4], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x260]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040b270
add esp, 0xc
mov dword [esp], edi
call fcn.00413770
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 0x411541
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408a60
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x1dc], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040b270
add esp, 0x10
mov eax, dword [esi + 0x2bc]
mov al, byte [eax]
mov byte [esi + 0x184], al
mov ecx, dword [esi + 0x50]
mov byte [ecx], 0x2d
mov byte [ecx + 1], 0x39
mov byte [ecx + 2], 0x82
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 4
jne 0x411596
xor eax, eax
cmp eax, 4
jae 0x4115dc
movzx edx, byte [ecx + eax]
mov edi, eax
shl edi, 1
and edi, 0x206d7f40
mov ecx, eax
xor ecx, 0x9036bfa0
add ecx, edi
mov edi, ecx
and edi, edx
shl edi, 1
add ecx, edx
sub ecx, edi
add cl, 0xe0
mov edx, dword [esi + 0x50]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x50]
add eax, 1
jmp 0x4115a4
sub esp, 8
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00401b20
add esp, 8
mov ecx, eax
xor eax, eax
cmp ecx, 0
mov edi, 0
je 0x4117db
sub esp, 4
mov dword [esi + 0x288], ecx
mov dword [esp], ecx
call fcn.00402070
add esp, 4
mov edi, eax
mov ecx, 8
mov eax, edi
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 0x411659
mov edx, eax
sub esp, 4
mov dword [esp], edx
call fcn.00408a60
add esp, 4
mov dword [eax], edi
add eax, 4
cmp edi, 0
mov dword [esi + 0x1cc], edi
mov dword [esi + 8], eax
je 0x41169c
shl edi, 3
mov ebx, eax
add ebx, edi
mov edi, eax
mov ecx, edi
call fcn.00413ac0
add edi, 8
cmp edi, ebx
jne 0x411683
mov edi, dword [esi + 0x1cc]
mov eax, dword [esi + 8]
jmp 0x41169c
xor ebx, ebx
jmp 0x4116a0
cmp ebx, edi
jb 0x4116a9
jmp 0x4117db
sub esp, 8
mov eax, dword [esi + 0x288]
mov dword [esp], eax
mov dword [esp + 4], ebx
call fcn.00402080
add esp, 8
mov edi, eax
mov eax, dword [esi + 0x2b8]
mov al, byte [eax]
mov byte [esi + 0x188], al
mov ecx, dword [esi + 0x4c]
mov byte [ecx], 0x2b
mov byte [ecx + 1], 0x31
mov byte [ecx + 2], 0x86
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 4
jne 0x4116e4
xor eax, eax
cmp eax, 4
jae 0x411712
mov ecx, dword [esi + 0x4c]
mov cl, byte [ecx + eax]
mov dl, al
add dl, 0x61
xor dl, cl
mov ecx, dword [esi + 0x4c]
add dl, 0x1b
mov byte [ecx + eax], dl
add eax, 1
jmp 0x4116f2
sub esp, 8
mov dword [esi + 0x25c], edi
mov dword [esp], edi
mov dword [esp + 4], ecx
call fcn.004018c0
add esp, 8
mov dword [esi + 0x254], eax
mov eax, dword [esi + 0x2b4]
mov al, byte [eax]
mov byte [esi + 0x18c], al
mov ecx, dword [esi + 0x48]
mov byte [ecx], 0xbb
mov byte [ecx + 1], 0xad
mov byte [ecx + 2], 0x26
mov eax, 3
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 5
jne 0x411751
xor edi, edi
cmp edi, 5
jae 0x411793
mov dl, byte [ecx + edi]
mov eax, edi
add eax, 0x39
mov ecx, 6
sub ecx, edi
and ecx, 0x21
and eax, 0xde
or ecx, eax
xor cl, dl
xor cl, 0x21
add cl, 0xe3
mov eax, dword [esi + 0x48]
mov byte [eax + edi], cl
mov ecx, dword [esi + 0x48]
add edi, 1
jmp 0x41175f
sub esp, 8
mov eax, dword [esi + 0x25c]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.004018c0
add esp, 8
mov edx, ebx
shl edx, 3
mov ecx, dword [esi + 8]
add ecx, edx
sub esp, 8
mov dword [esp], eax
mov eax, dword [esi + 0x254]
mov dword [esp + 4], eax
call fcn.00413ad0
sub ebx, 0xffffffff
mov edi, dword [esi + 0x1cc]
mov eax, dword [esi + 8]
jmp 0x4116a0
mov dword [esi + 8], eax
sub esp, 4
mov ebx, edi
mov edi, dword [esi + 0x1f8]
mov ecx, edi
mov dword [esp], 3
call fcn.00409690
sub esp, 0x14
mov dword [esp], edi
mov eax, dword [esi + 0x1e4]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1dc]
mov dword [esp + 8], eax
mov eax, dword [esi + 8]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ebx
call fcn.0041b0a0
add esp, 0x14
mov ecx, edi
call fcn.0040a0c0
mov ecx, dword [esi + 8]
cmp ecx, 0
je 0x411867
mov ebx, ecx
add ebx, 0xfffffffc
mov eax, dword [ecx - 4]
shl eax, 3
mov edi, ecx
add edi, eax
cmp ecx, edi
je 0x411859
jmp 0x411848
add edi, 0xfffffff8
mov ecx, edi
call fcn.00413b90
cmp edi, dword [esi + 8]
jne 0x411848
jmp 0x411859
sub esp, 4
mov dword [esp], ebx
call fcn.00408a70
add esp, 4
jmp 0x411869
sub esp, 4
mov eax, dword [esi + 0x1e4]
mov dword [esp], eax
call fcn.00408a70
add esp, 4
jmp 0x41187f
jmp 0x411881
sub esp, 4
mov eax, dword [esi + 0x1dc]
mov dword [esp], eax
call fcn.00408a70
add esp, 4
mov ecx, dword [esi + 0x1f8]
call fcn.00409770
jmp 0x4118a2
jmp 0x4118a4
mov ebx, dword [esi + 0x2ac]
add ebx, 1
mov edi, dword [esi + 0x2b0]
jmp 0x40ec46
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret