Function at 0x40f203
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x4b0
mov esi, esp
push eax
mov dword [esi + 0x380], esp
push eax
mov dword [esi + 0x37c], esp
push eax
mov dword [esi + 0x378], esp
push eax
mov dword [esi + 0x374], esp
push eax
mov dword [esi + 0x370], esp
push eax
mov dword [esi + 0x36c], esp
push eax
mov dword [esi + 0xd0], esp
push eax
mov dword [esi + 0xcc], esp
push eax
mov dword [esi + 0x368], esp
push eax
mov dword [esi + 0x364], esp
push eax
mov dword [esi + 0x360], esp
push eax
mov dword [esi + 0x35c], esp
push eax
mov dword [esi + 0x358], esp
push eax
mov dword [esi + 0x64], esp
push eax
mov dword [esi + 0x354], esp
push eax
mov dword [esi + 0xc8], esp
push eax
mov dword [esi + 0x350], esp
push eax
mov dword [esi + 0xc4], esp
push eax
mov dword [esi + 0x34c], esp
push eax
mov dword [esi + 0xc0], esp
push eax
mov dword [esi + 0x348], esp
push eax
mov dword [esi + 0x60], esp
push eax
mov dword [esi + 0x344], esp
sub esp, 0x14
mov dword [esi + 0x340], esp
sub esp, 0x88
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x5c], eax
mov esp, eax
push eax
mov dword [esi + 0x33c], esp
push eax
mov dword [esi + 0x338], esp
push eax
mov dword [esi + 0x334], esp
push eax
mov dword [esi + 0x330], esp
push eax
mov dword [esi + 0xbc], esp
push eax
mov dword [esi + 0xb8], esp
push eax
mov dword [esi + 0x32c], esp
push eax
mov dword [esi + 0x328], esp
push eax
mov dword [esi + 0x324], esp
push eax
mov dword [esi + 0xb4], esp
push eax
mov dword [esi + 0x320], esp
push eax
mov dword [esi + 0xb0], esp
push eax
mov dword [esi + 0x31c], esp
push eax
mov dword [esi + 0xac], esp
push eax
mov dword [esi + 0x318], esp
sub esp, 0x14
mov dword [esi + 0x314], esp
sub esp, 0x88
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x278], eax
mov esp, eax
mov al, byte [esi + 0x14c]
mov byte [esi + 0x150], al
mov word [esi + 0x36], 0x9d9f
movzx ecx, word [esi + 0x36]
xor ecx, 0xbbacadc
mov edx, ecx
shl edx, 1
and edx, 0x4453523e
xor ecx, 0xa229a91f
mov eax, ecx
add eax, edx
mov edi, eax
xor edi, 0xfffffffe
mov edx, eax
or edx, 1
and edx, edi
mov edi, edx
and edi, 0xfffffffd
mov ebx, edx
and ebx, 2
xor ebx, 2
imul ebx, edi
mov edi, edx
and edi, 2
or edx, 2
imul edx, edi
add edx, ebx
shl ecx, 1
and ecx, 2
add eax, 1
sub eax, ecx
mov ecx, eax
and ecx, edx
shl ecx, 1
xor eax, edx
add eax, ecx
mov word [esi + 0x36], ax
lea eax, [esi + 0x36]
sub esp, 8
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401a80
add esp, 8
mov ebx, eax
cmp ebx, 0
jne 0x40f0a1
xor eax, eax
jmp 0x4118b8
xor edi, edi
jmp 0x40f0a5
sub esp, 4
mov dword [esp], ebx
call fcn.00401f30
add esp, 4
cmp edi, eax
jb 0x40f0be
mov al, 1
jmp 0x4118b8
sub esp, 8
mov dword [esp], ebx
mov dword [esi + 0x274], edi
mov dword [esp + 4], edi
call fcn.00401f40
add esp, 8
mov edi, eax
mov al, byte [esi + 0x148]
mov byte [esi + 0x154], al
mov word [esi + 0x34], 0x86e5
mov ax, word [esi + 0x34]
xor ax, 0xc9d9
add ax, 0xb138
mov word [esi + 0x34], ax
lea eax, [esi + 0x34]
sub esp, 0xc
mov dword [esp], edi
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e30
add esp, 0xc
cmp eax, 0
setne al
or al, al
xor al, 0xff
xor al, 0xff
and al, 1
or al, 0
xor al, 0xff
test al, 1
jne 0x40f12f
jmp 0x40f13a
mov edi, dword [esi + 0x274]
jmp 0x4118b0
mov dword [esi + 0x310], ebx
mov al, byte [esi + 0x144]
mov byte [esi + 0x158], al
call fcn.00413a30
call fcn.00413a30
mov word [esi + 0x32], 0xcd55
call fcn.00413a30
call fcn.00413a30
movzx eax, word [esi + 0x32]
mov edx, eax
or edx, 0x5bf7e516
not eax
or eax, 0xa4081ae9
xor edx, eax
mov ebx, edx
add ebx, 0xdfbf28b7
mov eax, ebx
and eax, 1
mov ecx, 0x2040d748
sub ecx, edx
mov edx, ecx
not edx
and ecx, 0xb7d7
and ebx, 0x4828
or ecx, ebx
and edx, 1
or ecx, edx
xor ecx, 0xb7d6
add ecx, eax
mov word [esi + 0x32], cx
sub esp, 8
lea eax, [esi + 0x32]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.00401970
add esp, 8
fnstcw word [esi + 0x46]
movzx eax, word [esi + 0x46]
or eax, 0xc00
mov word [esi + 0x222], ax
fldcw word [esi + 0x222]
fistp dword [esi + 0x394]
fldcw word [esi + 0x46]
mov eax, dword [esi + 0x394]
mov ecx, eax
sub ecx, 3
ja 0x4118a2
mov eax, dword [eax*4 + 0x43d588]
jmp eax
mov al, byte [esi + 0x140]
mov byte [esi + 0x15c], al
mov word [esi + 0x30], 0x8877
movzx ecx, word [esi + 0x30]
mov eax, ecx
xor eax, 0xffffffff
and eax, 0x73d4811f
and ecx, 0x7ee0
or eax, ecx
add eax, 0x615bf707
mov ecx, eax
and ecx, 1
or eax, 1
or ecx, 0x9352
add ecx, eax
add cx, 0x6cae
mov word [esi + 0x30], cx
lea eax, [esi + 0x30]
sub esp, 0xc
mov dword [esp], edi
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e30
add esp, 0xc
cmp eax, 0
je 0x40f450
mov al, byte [esi + 0x13c]
mov byte [esi + 0x160], al
mov word [esi + 0x84], 0x859d
mov word [esi + 0x86], 0x8599
xor eax, eax
cmp eax, 2
jae 0x40f2c1
mov cx, word [esi + eax*2 + 0x84]
mov dx, ax
add dx, 0x7f58
xor dx, cx
add dx, 0x540
mov word [esi + eax*2 + 0x84], dx
mov ecx, eax
shl ecx, 1
or ecx, 1
sub ecx, eax
mov eax, ecx
jmp 0x40f28f
mov eax, dword [esi + 0x84]
mov cl, byte [esi + 0x138]
mov byte [esi + 0x164], cl
mov word [esi + 0x2e], 0x8e1b
mov cx, word [esi + 0x2e]
xor cx, 0x5a86
add cx, 0x2bd0
mov word [esi + 0x2e], cx
lea ecx, [esi + 0x2e]
sub esp, 0xc
mov dword [esp], edi
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.00401e30
add esp, 0xc
cmp eax, 0
je 0x40f450
mov al, byte [esi + 0x134]
mov byte [esi + 0x168], al
mov word [esi + 0x2c], 0xd998
mov ax, word [esi + 0x2c]
xor ax, 0x3c92
add ax, 0x1b70
mov word [esi + 0x2c], ax
lea eax, [esi + 0x2c]
sub esp, 0xc
mov dword [esp], edi
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e30
add esp, 0xc
cmp eax, 0
setne al
test al, 1
jne 0x40f35b
jmp 0x40f450
mov al, byte [esi + 0x130]
mov byte [esi + 0x16c], al
mov word [esi + 0x2a], 0x4c8b
movzx eax, word [esi + 0x2a]
mov ecx, eax
and ecx, 0x6fb4197
shl ecx, 1
add eax, 0x6fb4197
sub eax, ecx
add eax, 0xc825f347
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
mov word [esi + 0x2a], ax
lea eax, [esi + 0x2a]
sub esp, 0xc
mov dword [esp], edi
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e30
add esp, 0xc
cmp eax, 0
je 0x40f450
mov al, byte [esi + 0x12c]
mov byte [esi + 0x170], al
mov word [esi + 0x80], 0x4392
mov word [esi + 0x82], 0xcf35
xor eax, eax
cmp eax, 2
jae 0x40f41f
movzx edx, word [esi + eax*2 + 0x80]
mov ecx, eax
add ecx, 0x60bc5394
xor ecx, edx
add ecx, 0xfa1d635f
mov edx, ecx
shl edx, 1
and edx, 2
mov ebx, edi
mov edi, ecx
and edi, edx
shl edi, 1
xor ecx, edx
xor ecx, 1
add ecx, edi
mov edi, ebx
mov word [esi + eax*2 + 0x80], cx
add eax, 1
jmp 0x40f3dd
sub esp, 0xc
lea eax, [esi + 0x80]
mov dword [esp + 4], eax
mov dword [esp], edi
mov dword [esp + 8], 3
call fcn.00401e30
add esp, 0xc
test eax, eax
sete al
jmp 0x40f446
test al, 1
jne 0x4118a2
jmp 0x40f455
jmp 0x4118a2
mov al, byte [esi + 0x128]
mov byte [esi + 0x174], al
mov word [esi + 0x28], 0xf12b
call fcn.00413a30
call fcn.00413a30
movzx eax, word [esi + 0x28]
mov ecx, eax
and ecx, 0x54a3
mov edx, ecx
or edx, 0xfffd
inc edx
mov dword [esi + 4], edi
mov edi, eax
and edi, 0x54a1
imul edx, edi
mov edi, eax
and edi, 2
or ecx, 2
imul ecx, edi
sub edx, ecx
lea eax, [eax + edx - 0x5075]
mov word [esi + 0x28], ax
sub esp, 8
lea eax, [esi + 0x28]
mov dword [esp + 4], eax
mov eax, dword [esi + 4]
mov dword [esp], eax
call fcn.00401870
add esp, 8
mov dword [esi + 0x254], eax
mov al, byte [esi + 0x124]
mov byte [esi + 0x178], al
mov word [esi + 0x26], 0x495d
movzx eax, word [esi + 0x26]
mov ecx, eax
or ecx, 0x6a642cb0
neg ecx
lea ecx, [eax + ecx + 0x6a642cb0]
not eax
and eax, 0x959bd34f
mov edx, ecx
not edx
mov edi, eax
and edi, edx
mov edx, eax
xor edx, ecx
add eax, edx
not eax
lea eax, [edi + eax - 0x6580]
mov word [esi + 0x26], ax
sub esp, 8
lea eax, [esi + 0x26]
mov dword [esp + 4], eax
mov eax, dword [esi + 4]
mov dword [esp], eax
call fcn.00401a80
add esp, 8
mov dword [esi + 0x264], eax
mov al, byte [esi + 0x120]
mov byte [esi + 0x17c], al
mov word [esi + 0x24], 0xa671
movzx eax, word [esi + 0x24]
mov ecx, eax
or ecx, 0xe9e3
and eax, 0xe9e3
sub ecx, eax
add ecx, 0xffffb0e8
mov word [esi + 0x24], cx
sub esp, 8
lea eax, [esi + 0x24]
mov dword [esp + 4], eax
mov eax, dword [esi + 4]
mov dword [esp], eax
call fcn.00401870
add esp, 8
mov dword [esi + 0x260], eax
mov al, byte [esi + 0x11c]
mov byte [esi + 0x180], al
call fcn.00413a30
call fcn.00413a30
mov word [esi + 0x22], 0x676f
call fcn.00413a30
call fcn.00413a30
movzx ecx, word [esi + 0x22]
mov eax, ecx
xor eax, 0x2dbebb93
mov edx, eax
and edx, 0x2367
mov edi, eax
and edi, 0xdc98
xor ecx, 0x2dbe98f4
add eax, ecx
sub eax, edi
mov edi, dword [esi + 4]
lea eax, [eax + edx + 1]
mov word [esi + 0x22], ax
sub esp, 8
lea eax, [esi + 0x22]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.00401970
add esp, 8
fnstcw word [esi + 0x44]
movzx eax, word [esi + 0x44]
or eax, 0xc00
mov word [esi + 0x220], ax
fldcw word [esi + 0x220]
fistp dword [esi + 0x388]
fldcw word [esi + 0x44]
mov eax, dword [esi + 0x388]
mov dword [esi + 0x2fc], eax
mov al, byte [esi + 0x118]
mov byte [esi + 0x184], al
mov word [esi + 0x7c], 0x3737
mov word [esi + 0x7e], 0xa3d2
xor eax, eax
cmp eax, 2
jae 0x40f6df
movzx edx, word [esi + eax*2 + 0x7c]
mov edi, 0x69b384e6
sub edi, eax
mov ebx, eax
add ebx, 0x164c7b19
mov ecx, ebx
and ecx, 0x823dfc96
and edi, 0x7dc20369
or ecx, edi
xor ecx, edx
or ebx, edx
xor ecx, 0x823dfc96
and ebx, ecx
xor ebx, 0xffffffff
mov ecx, eax
add ecx, 0x164c7b19
or ecx, edx
and ecx, ebx
mov edx, ecx
and edx, 0x4d9c2735
mov ebx, ecx
and ebx, 2
xor ebx, 2
mov edi, ecx
and edi, 0x4d9c2735
imul edi, ebx
mov ebx, ecx
and ebx, 2
or edx, 2
imul edx, ebx
add edx, edi
mov edi, dword [esi + 4]
xor ecx, 0x4d9c2737
mov ebx, ecx
add ebx, edx
and ecx, 1
mov edx, ebx
and edx, 0xfffe
xor edx, 0xfffe
and ebx, 0xfffe
xor ebx, 0xfffe
or edx, ebx
xor edx, 0xffffffff
add ecx, edx
mov word [esi + eax*2 + 0x7c], cx
add eax, 1
jmp 0x40f631
call fcn.00413a30
call fcn.00413a30
sub esp, 8
lea eax, [esi + 0x7c]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.00401970
add esp, 8
fnstcw word [esi + 0x42]
movzx eax, word [esi + 0x42]
or eax, 0xc00
mov word [esi + 0x21e], ax
fldcw word [esi + 0x21e]
fistp dword [esi + 0x384]
fldcw word [esi + 0x42]
mov eax, dword [esi + 0x384]
mov dword [esi + 0x2f8], eax
mov al, byte [esi + 0x114]
mov byte [esi + 0x188], al
mov word [esi + 0x78], 0x6217
mov word [esi + 0x7a], 0xcdf2
xor eax, eax
cmp eax, 2
jae 0x40f772
mov cx, word [esi + eax*2 + 0x78]
mov dx, ax
add dx, 0xac39
xor dx, cx
add dx, 0x9e38
mov word [esi + eax*2 + 0x78], dx
mov ecx, eax
shl ecx, 1
or ecx, 1
sub ecx, eax
mov eax, ecx
jmp 0x40f746
lea eax, [esi + 0x78]
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00401b80
add esp, 8
cmp eax, 0
setg byte [esi + 0x3c]
sub esp, 4
mov eax, dword [esi + 0x254]
mov dword [esp], eax
call fcn.004135d0
add esp, 4
mov ebx, eax
mov eax, ebx
and eax, 1
shl eax, 1
mov dword [esi + 0x2e4], ebx
xor ebx, 1
add ebx, eax
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f7ce
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408130
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 + 0x254]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040aab0
add esp, 0x10
xor eax, eax
lea eax, [esi + 0x110]
sub esp, 0x18
mov dword [esp], 0
mov dword [esi + 0x48], edi
mov dword [esp + 4], edi
mov ebx, dword [esi + 0x2e4]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x446180]
mov cl, byte [esi + 0x10c]
mov byte [esi + 0x18c], cl
mov word [esi + 0x74], 0xca35
mov word [esi + 0x76], 0xa57
xor ecx, ecx
cmp ecx, 2
jae 0x40f87f
mov dx, word [esi + ecx*2 + 0x74]
mov di, cx
add di, 0xc166
xor di, dx
add di, 0xf4d0
mov word [esi + ecx*2 + 0x74], di
add ecx, 1
jmp 0x40f85b
mov ecx, dword [esi + 0x74]
cmp eax, ecx
je 0x40f89e
jmp 0x40f888
sub esp, 4
mov eax, dword [esi + 0x48]
mov dword [esp], eax
call fcn.00408140
add esp, 4
jmp 0x40fb4c
mov eax, dword [esi + 0x110]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f8ba
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408130
add esp, 4
mov ecx, dword [0x446180]
mov dword [esi + 0x28c], ecx
mov ecx, dword [esi + 0x110]
xor edx, edx
lea edx, [esi + 0x110]
sub esp, 0x18
mov dword [esp], 0
mov edi, dword [esi + 0x48]
mov dword [esp + 4], edi
mov edi, eax
mov dword [esp + 8], ebx
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
call dword [esi + 0x28c]
cmp eax, 0
jge 0x40f928
jmp 0x40f912
sub esp, 4
mov eax, dword [esi + 0x48]
mov dword [esp], eax
call fcn.00408140
add esp, 4
jmp 0x40fb4a
jmp 0x40f92a
sub esp, 4
mov eax, dword [esi + 0x48]
mov dword [esp], eax
call fcn.00408140
add esp, 4
sub esp, 4
mov eax, dword [esi + 0x260]
mov dword [esp], eax
call fcn.004135d0
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 0x40f96c
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408130
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x23c], 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.0040aab0
add esp, 0x10
lea ecx, [esi + 0x420]
sub esp, 4
mov dword [esp], 1
call fcn.00408d40
xor ebx, ebx
jmp 0x40f9bf
sub esp, 4
mov eax, dword [esi + 0x264]
mov dword [esp], eax
call fcn.00401f30
add esp, 4
cmp ebx, eax
setb al
test al, 1
jne 0x40f9e3
jmp 0x40f9de
jmp 0x40fb0a
sub esp, 8
mov eax, dword [esi + 0x264]
mov dword [esp], eax
mov dword [esp + 4], ebx
call fcn.00401f10
add esp, 4
mov dword [esp], eax
call fcn.00401950
add esp, 4
cmp eax, 0
jne 0x40fa10
jmp 0x40faf6
mov dword [esi + 0x22c], edi
sub esp, 4
mov dword [esi + 0x2b0], eax
mov dword [esp], eax
call fcn.004135d0
add esp, 4
add eax, 1
mov ecx, 2
mov dword [esi + 0x2a0], eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40fa49
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408130
add esp, 4
mov edi, eax
xor eax, eax
sub esp, 0x10
mov dword [esp], edi
mov eax, dword [esi + 0x2a0]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x2b0]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040aab0
sub esp, 0xc
mov eax, dword [esi + 0x2fc]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x2f8]
mov dword [esp + 0x10], eax
mov dword [esi + 0x2ac], edi
mov dword [esp + 0xc], edi
mov eax, dword [esi + 0x22c]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x23c]
mov dword [esp + 4], eax
lea eax, [esi + 0x420]
mov dword [esp], eax
xor eax, eax
mov cl, byte [esi + 0x3c]
mov al, cl
and eax, 1
mov dword [esp + 0x18], eax
call fcn.0041fa70
add esp, 0x1c
sub esp, 4
mov eax, dword [esi + 0x2ac]
mov dword [esp], eax
call fcn.00408140
add esp, 4
jmp 0x40faec
jmp 0x40faee
mov edi, dword [esi + 0x22c]
jmp 0x40faf6
sub ebx, 0xa199cdbf
add ebx, 1
add ebx, 0xa199cdbf
jmp 0x40f9bf
sub esp, 4
mov eax, dword [esi + 0x23c]
mov dword [esp], eax
call fcn.00408140
add esp, 4
jmp 0x40fb20
jmp 0x40fb22
sub esp, 4
mov dword [esp], edi
call fcn.00408140
add esp, 4
lea ecx, [esi + 0x420]
call fcn.004098a0
lea ecx, [esi + 0x420]
call fcn.00408e20
jmp 0x40fb48
jmp 0x40fb4a
jmp 0x40fb4c
jmp 0x4118a2
mov al, byte [esi + 0x108]
mov byte [esi + 0x190], al
mov word [esi + 0x20], 0xc99
movzx ecx, word [esi + 0x20]
mov eax, ecx
or eax, 0xc80701b1
mov edx, eax
shl edx, 1
xor edx, 0xffffffff
add eax, edx
and ecx, 0xc80701b1
or eax, ecx
add ax, 0xd90
mov word [esi + 0x20], ax
lea eax, [esi + 0x20]
sub esp, 0xc
mov dword [esp], edi
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e30
add esp, 0xc
cmp eax, 0
je 0x40fdd2
mov al, byte [esi + 0x104]
mov byte [esi + 0x194], al
mov word [esi + 0x1e], 0xb613
movzx ecx, word [esi + 0x1e]
mov eax, ecx
xor eax, 0xffffffff
and eax, 0x5d5b
and ecx, 0xa2a4
or eax, ecx
add ax, 0x1528
mov word [esi + 0x1e], ax
lea eax, [esi + 0x1e]
sub esp, 0xc
mov dword [esp], edi
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e30
add esp, 0xc
cmp eax, 0
je 0x40fdd2
mov al, byte [esi + 0x100]
mov byte [esi + 0x198], al
mov word [esi + 0x1c], 0x84b7
movzx eax, word [esi + 0x1c]
mov ecx, eax
or ecx, 0x9d3c5bf5
xor ecx, 0xffffffff
and eax, 0x5bf5
or eax, ecx
mov edx, eax
xor edx, 0x2050
mov ecx, eax
or ecx, 0xdfaf
and ecx, edx
or eax, 0xdfaf
add ecx, eax
add cx, 1
mov word [esi + 0x1c], cx
lea eax, [esi + 0x1c]
sub esp, 0xc
mov dword [esp], edi
mov dword [esp + 4], eax
mov dword [esp + 8], 5
call fcn.00401e30
add esp, 0xc
cmp eax, 0
setne al
test al, 1
jne 0x40fc78
jmp 0x40fdd2
mov al, byte [esi + 0xfc]
mov byte [esi + 0x19c], al
mov word [esi + 0x1a], 0x7683
movzx eax, word [esi + 0x1a]
mov ecx, eax
and ecx, 0x4601
shl ecx, 1
mov edx, eax
and edx, 0x40054601
shl edx, 1
xor eax, 0x40054601
add eax, edx
sub eax, ecx
add ax, 0xcff8
mov word [esi + 0x1a], ax
lea eax, [esi + 0x1a]
sub esp, 0xc
mov dword [esp], edi
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e30
add esp, 0xc
cmp eax, 0
je 0x40fdd2
mov al, byte [esi + 0xf8]
mov byte [esi + 0x1a0], al
mov word [esi + 0x18], 0x2572
mov ax, word [esi + 0x18]
xor ax, 0xb2e6
add ax, 0x68d0
mov word [esi + 0x18], ax
lea eax, [esi + 0x18]
sub esp, 0xc
mov dword [esp], edi
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e30
add esp, 0xc
cmp eax, 0
je 0x40fdd2
mov al, byte [esi + 0xf4]
mov byte [esi + 0x1a4], al
mov word [esi + 0x70], 0x436b
mov word [esi + 0x72], 0xcece
xor eax, eax
cmp eax, 2
jae 0x40fd8f
movzx edx, word [esi + eax*2 + 0x70]
mov ecx, edx
xor ecx, 0xffffffff
mov ebx, eax
add ebx, 0xdf54c1e5
and ebx, ecx
mov ecx, 0x3e1a
sub ecx, eax
mov dword [esi + 4], edi
mov edi, 0x3e1a
sub edi, eax
and ecx, edi
mov edi, dword [esi + 4]
and ecx, edx
or ecx, ebx
mov edx, ecx
shl edx, 1
and edx, 0xe794
xor ecx, 0xf3ca
add ecx, edx
add cx, 0xfd0e
mov word [esi + eax*2 + 0x70], cx
add eax, 1
jmp 0x40fd3b
lea eax, [esi + 0x70]
sub esp, 0xc
mov dword [esp], edi
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e30
add esp, 0xc
cmp eax, 0
setne al
mov cl, al
xor cl, 0xff
xor al, 0xff
or cl, al
and cl, 1
xor cl, 0xff
and cl, 1
xor cl, 0xff
test cl, 1
jne 0x4118a2
jmp 0x40fdd7
jmp 0x4118a2
call fcn.00413a30
mov al, byte [esi + 0xf0]
mov byte [esi + 0x1a8], al
call fcn.00413a30
call fcn.00413a30
mov word [esi + 0x16], 0xa8fa
movzx eax, word [esi + 0x16]
xor eax, 0xffffa0f5
add eax, 0xfffff858
mov word [esi + 0x16], ax
call fcn.00413a30
call fcn.00413a30
sub esp, 8
lea eax, [esi + 0x16]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.00401870
add esp, 8
mov dword [esi + 0x24c], eax
mov al, byte [esi + 0xec]
mov byte [esi + 0x1ac], al
call fcn.00413a30
call fcn.00413a30
mov word [esi + 0x14], 0xe499
movzx eax, word [esi + 0x14]
xor eax, 0x3be1
add eax, 0x20f8
mov word [esi + 0x14], ax
sub esp, 8
lea eax, [esi + 0x14]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.00401870
add esp, 8
mov dword [esi + 0x300], eax
mov al, byte [esi + 0xe8]
mov byte [esi + 0x1b0], al
mov word [esi + 0x12], 0x65ea
movzx eax, word [esi + 0x12]
xor eax, 0xd0f
add eax, 0xffff9788
mov word [esi + 0x12], ax
sub esp, 8
lea eax, [esi + 0x12]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.00401a80
add esp, 8
mov dword [esi + 0x270], eax
mov al, byte [esi + 0xe4]
mov byte [esi + 0x1b4], al
mov word [esi + 0x10], 0xba67
movzx eax, word [esi + 0x10]
mov ecx, eax
and ecx, 0x5cc5
add ecx, ecx
neg ecx
lea eax, [eax + ecx + 0x769d]
mov word [esi + 0x10], ax
sub esp, 8
lea eax, [esi + 0x10]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.00401870
add esp, 8
mov dword [esi + 0x304], eax
mov al, byte [esi + 0xe0]
mov byte [esi + 0x1b8], al
mov word [esi + 0xe], 0x33f8
movzx eax, word [esi + 0xe]
mov ecx, eax
and ecx, 0x5dbc
add ecx, ecx
neg ecx
lea eax, [eax + ecx - 0x1024]
mov word [esi + 0xe], ax
sub esp, 8
lea eax, [esi + 0xe]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.00401970
add esp, 8
fnstcw word [esi + 0x40]
movzx eax, word [esi + 0x40]
or eax, 0xc00
mov word [esi + 0x21c], ax
fldcw word [esi + 0x21c]
fistp dword [esi + 0x390]
fldcw word [esi + 0x40]
mov eax, dword [esi + 0x390]
mov dword [esi + 0x30c], eax
mov al, byte [esi + 0xdc]
mov byte [esi + 0x1bc], al
mov word [esi + 0x6c], 0xcad8
mov word [esi + 0x6e], 0xb97f
xor eax, eax
cmp eax, 2
jae 0x40ffc6
movzx edx, word [esi + eax*2 + 0x6c]
mov ecx, eax
add ecx, 0xa628310e
xor ecx, edx
mov edx, 0x8870
sub edx, ecx
mov ebx, edi
mov edi, 0x8870
sub edi, ecx
or edx, edi
mov edi, ebx
and ecx, 1
xor ecx, 1
or edx, 1
sub ecx, edx
mov word [esi + eax*2 + 0x6c], cx
add eax, 1
jmp 0x40ff89
sub esp, 8
lea eax, [esi + 0x6c]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.00401970
add esp, 8
fnstcw word [esi + 0x3e]
movzx eax, word [esi + 0x3e]
or eax, 0xc00
mov word [esi + 0x21a], ax
fldcw word [esi + 0x21a]
fistp dword [esi + 0x38c]
fldcw word [esi + 0x3e]
mov edi, dword [esi + 0x38c]
sub esp, 4
mov eax, dword [esi + 0x24c]
mov dword [esp], eax
call fcn.004135d0
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 0x410034
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408130
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], ebx
mov ebx, eax
mov eax, dword [esi + 0x24c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040aab0
add esp, 0x10
mov dword [esi + 0x27c], 0
mov dword [esi + 0x280], 0
mov dword [esi + 0x284], 0
mov dword [esi + 0x288], 0
lea ecx, [esi + 0x27c]
sub esp, 4
mov dword [esp], ebx
call fcn.00437170
jmp 0x4100a5
sub esp, 4
mov dword [esp], ebx
call fcn.00408140
add esp, 4
jmp 0x4100b5
jmp 0x4100b7
lea ecx, [esi + 0x27c]
sub esp, 4
mov dword [esp], 0x1000
call fcn.004373c0
cmp eax, 0
setge al
test al, 1
jne 0x4100dd
jmp 0x4100d8
jmp 0x41075a
mov dword [esi + 0x308], edi
mov dword [esi + 0xd8], 0
mov eax, dword [esi + 0x27c]
mov dword [esi + 0x2d8], eax
mov al, byte [esi + 0x1c0]
mov byte [esi + 0x218], al
mov word [esi + 0x88], 0xa70b
mov word [esi + 0x8a], 0xa70a
xor eax, eax
cmp eax, 2
jae 0x41015d
mov dx, word [esi + eax*2 + 0x88]
mov edi, eax
add edi, 0x7b94
mov ecx, 0x46b
sub ecx, eax
and ecx, 0x352f
and edi, 0xcad0
or ecx, edi
xor cx, dx
xor cx, 0x352f
add cx, 0x2360
mov word [esi + eax*2 + 0x88], cx
add eax, 1
jmp 0x410119
mov ebx, dword [esi + 0x88]
xor edi, edi
mov ecx, 2
cmp edi, dword [0x446184]
jb 0x410177
jmp 0x41020e
mov eax, ebx
mov edx, dword [0x446188]
cmp dword [edx + edi*8], 0x4947caf6
sete bl
xor ecx, ecx
mov byte [esi + 0x39], bl
test bl, 1
jne 0x410197
mov ebx, eax
jmp 0x4101fe
mov edx, dword [edx + edi*8 + 4]
mov ecx, 2
mov ebx, eax
cmp edx, ebx
je 0x4101fe
mov eax, dword [0x44618c]
xor ecx, ecx
lea ecx, [esi + 0xd8]
sub esp, 0x20
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esi + 0x2d8]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], ecx
call fcn.00438b10
add esp, 0x20
mov dword [esi + 0x2bc], eax
mov ecx, 1
test byte [esi + 0x39], 1
je 0x410206
jmp 0x41020e
add edi, 1
jmp 0x410165
cmp ecx, 2
je 0x410219
mov ebx, dword [esi + 0x2bc]
mov al, byte [esi + 0xd4]
mov byte [esi + 0x1c4], al
mov word [esi + 0x68], 0x757d
mov word [esi + 0x6a], 0xb57a
xor eax, eax
cmp eax, 2
jae 0x410257
mov cx, word [esi + eax*2 + 0x68]
mov dx, ax
add dx, 0x62f1
xor dx, cx
add dx, 0xe878
mov word [esi + eax*2 + 0x68], dx
add eax, 1
jmp 0x410233
mov eax, dword [esi + 0x68]
cmp ebx, eax
jne 0x41075a
mov eax, dword [esi + 0xd8]
sub eax, 0xfffffffe
sub esp, 4
mov dword [esp], eax
call fcn.00437120
add esp, 4
mov dword [esi + 0xa0], eax
mov eax, dword [esi + 0xd8]
xor ecx, ecx
sub ecx, eax
add ecx, 0xfffffffe
xor eax, eax
sub eax, ecx
mov dword [esi + 0x2e0], eax
mov eax, dword [esi + 0x27c]
mov dword [esi + 0x2d4], eax
mov al, byte [esi + 0x1c8]
mov byte [esi + 0x214], al
mov word [esi + 0x8c], 0xa70b
mov word [esi + 0x8e], 0xa70a
xor eax, eax
cmp eax, 2
jae 0x410306
mov dx, word [esi + eax*2 + 0x8c]
mov edi, eax
add edi, 0x7b94
mov ecx, 0x46b
sub ecx, eax
and ecx, 0x352f
and edi, 0xcad0
or ecx, edi
xor cx, dx
xor cx, 0x352f
add cx, 0x2360
mov word [esi + eax*2 + 0x8c], cx
add eax, 1
jmp 0x4102c2
mov edx, dword [esi + 0x8c]
xor edi, edi
mov ecx, 2
cmp edi, dword [0x446184]
jb 0x410320
jmp 0x4103c3
mov dword [esi + 0x90], edx
mov edx, dword [0x446188]
cmp dword [edx + edi*8], 0x4947caf6
sete bl
xor ecx, ecx
mov byte [esi + 0x38], bl
test bl, 1
jne 0x410342
jmp 0x4103a7
mov edx, dword [edx + edi*8 + 4]
mov ecx, 2
cmp edx, dword [esi + 0x90]
je 0x4103a7
mov eax, dword [0x44618c]
xor ecx, ecx
sub esp, 0x20
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esi + 0x2d4]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov eax, dword [esi + 0xa0]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x2e0]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0
call fcn.00438b10
add esp, 0x20
mov ecx, 1
test byte [esi + 0x38], 1
je 0x4103b5
mov edx, dword [esi + 0x90]
jmp 0x4103c3
add edi, 1
mov edx, dword [esi + 0x90]
jmp 0x41030e
cmp ecx, 2
je 0x4103ca
mov edx, eax
cmp edx, 0
jl 0x410746
sub esp, 4
mov edi, dword [esi + 0x300]
mov dword [esp], edi
call fcn.004135d0
add esp, 4
mov ebx, eax
mov dword [esi + 0x2d0], ebx
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41040a
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408130
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x2dc], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040aab0
add esp, 0x10
mov ecx, dword [esi + 0xa0]
mov edi, ecx
add edi, 4
mov eax, dword [ecx + 4]
movzx ecx, word [ecx]
shr ecx, 1
add ecx, 0xfffffffe
add ecx, 1
shl ecx, 1
add eax, ecx
mov ebx, eax
cmp ebx, dword [edi]
jb 0x410470
movzx ecx, word [ebx]
cmp ecx, 0x5c
jne 0x41046b
jmp 0x410474
add ebx, 0xfffffffe
jmp 0x41045d
mov ebx, eax
jmp 0x410474
mov eax, dword [edi]
add ebx, 0x9362e8e9
sub ebx, eax
sub ebx, 0x9362e8e9
sar ebx, 1
mov eax, ebx
add eax, dword [esi + 0x2d0]
add eax, 1
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4104a7
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408130
add esp, 4
mov ecx, dword [edi]
sub esp, 0xc
mov dword [esi + 0x2cc], eax
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
call fcn.00413640
add esp, 4
mov dword [esp], eax
mov edi, dword [esi + 0x2dc]
mov dword [esp + 4], edi
call fcn.00409e30
add esp, 8
mov ebx, eax
sub esp, 4
mov dword [esp], edi
call fcn.00408140
add esp, 4
jmp 0x4104fa
mov eax, ebx
xor eax, 0xffffffff
mov edi, dword [esi + 0x2cc]
and eax, edi
mov ecx, edi
xor ecx, 0xffffffff
and ebx, ecx
sub ebx, eax
sar ebx, 1
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41052d
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408130
sub esp, 4
mov dword [esp], edi
mov dword [esi + 0x244], eax
mov dword [esp + 4], eax
call fcn.00435660
add esp, 8
sub esp, 4
mov dword [esp], edi
call fcn.00408140
add esp, 4
jmp 0x410560
sub esp, 4
mov edi, dword [esi + 0x304]
mov dword [esp], edi
call fcn.004135d0
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 0x410591
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408130
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x234], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040aab0
add esp, 0x10
lea ecx, [esi + 0x398]
sub esp, 4
mov dword [esp], 1
call fcn.00408d40
xor ebx, ebx
mov edi, dword [esi + 0x270]
sub esp, 4
mov dword [esp], edi
call fcn.00401f30
add esp, 4
cmp ebx, eax
jb 0x4105f9
jmp 0x410702
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], ebx
call fcn.00401f10
add esp, 4
mov dword [esp], eax
call fcn.00401950
add esp, 4
mov edi, eax
cmp edi, 0
jne 0x410622
jmp 0x4106ed
sub esp, 4
mov dword [esp], edi
call fcn.004135d0
add esp, 4
sub eax, 0xffffffff
mov ecx, 2
mov dword [esi + 0x2a4], eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41064f
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408130
add esp, 4
mov dword [esi + 0x290], eax
xor ecx, ecx
sub esp, 0x10
mov dword [esp], eax
mov eax, dword [esi + 0x2a4]
mov dword [esp + 4], eax
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040aab0
add esp, 0x10
lea eax, [esi + 0x398]
xor ecx, ecx
sub esp, 0x1c
mov dword [esp], eax
mov eax, dword [esi + 0x234]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x244]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x290]
mov edi, eax
mov dword [esp + 0xc], eax
mov eax, dword [esi + 0x308]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x30c]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
call fcn.0041fa70
add esp, 0x1c
sub esp, 4
mov dword [esp], edi
call fcn.00408140
add esp, 4
jmp 0x4106eb
jmp 0x4106ed
mov eax, ebx
and eax, 1
or ebx, 1
add ebx, eax
mov edi, dword [esi + 0x270]
jmp 0x4105e2
sub esp, 4
mov eax, dword [esi + 0x234]
mov dword [esp], eax
call fcn.00408140
add esp, 4
jmp 0x410718
jmp 0x41071a
sub esp, 4
mov eax, dword [esi + 0x244]
mov dword [esp], eax
call fcn.00408140
add esp, 4
jmp 0x410730
lea ecx, [esi + 0x398]
call fcn.004098a0
lea ecx, [esi + 0x398]
call fcn.00408e20
sub esp, 4
mov eax, dword [esi + 0xa0]
mov dword [esp], eax
call fcn.00437140
add esp, 4
lea ecx, [esi + 0x27c]
call fcn.00437520
jmp 0x4118a2
call fcn.00413a30
mov eax, dword [esi + 0x37c]
mov al, byte [eax]
mov byte [esi + 0x1cc], al
call fcn.00413a30
call fcn.00413a30
call fcn.00413a30
call fcn.00413a30
mov ebx, dword [esi + 0x380]
mov word [ebx], 0x2aa4
movzx eax, word [ebx]
mov ecx, eax
not ecx
lea ecx, [eax + ecx*2]
mov edx, 0xfffe
sub edx, ecx
not edx
and eax, 0x97b1
and edx, 0x684e
lea eax, [eax + edx - 0x4270]
mov word [ebx], ax
sub esp, 8
mov dword [esp + 4], ebx
mov dword [esp], edi
call fcn.00401870
add esp, 8
mov dword [esi + 0x94], eax
mov eax, dword [esi + 0x374]
mov al, byte [eax]
mov byte [esi + 0x1d0], al
mov ebx, dword [esi + 0x378]
mov word [ebx], 0xd84f
call fcn.00413a30
call fcn.00413a30
movzx eax, word [ebx]
xor eax, 0xffffe7e7
add eax, 0xffffc0c8
mov word [ebx], ax
sub esp, 8
mov dword [esp + 4], ebx
mov dword [esi + 4], edi
mov dword [esp], edi
call fcn.00401870
add esp, 8
cmp dword [esi + 0x94], 0
sete dl
mov dword [esi + 0x240], eax
test eax, eax
sete cl
or dl, cl
test dl, 1
jne 0x410842
jmp 0x410847
jmp 0x411164
sub esp, 4
mov eax, dword [esi + 0x94]
mov dword [esp], eax
call fcn.004135d0
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 0x410878
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408130
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x26c], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x94]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040aab0
add esp, 0x10
mov eax, dword [esi + 0x36c]
mov al, byte [eax]
mov byte [esi + 0x1d4], al
mov edx, dword [esi + 0x370]
mov word [edx], 0xd895
movzx ecx, word [edx]
mov eax, ecx
or eax, 0x512b
xor ecx, 0xffffffff
or ecx, 0xaed4
and eax, ecx
add ax, 0x76a8
mov word [edx], ax
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.00401870
add esp, 8
mov edi, eax
mov dword [esi + 0xa8], 0
cmp edi, 0
je 0x410975
sub esp, 4
mov dword [esp], edi
call fcn.004135d0
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 0x410941
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408130
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0xa8], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040aab0
add esp, 0x10
sub esp, 4
mov eax, dword [esi + 0x240]
mov dword [esp], eax
call fcn.004135d0
add esp, 4
mov ebx, eax
mov dword [esi + 0x230], ebx
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4109ac
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408130
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 + 0x240]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040aab0
add esp, 0x10
xor eax, eax
sub esp, 0x18
mov dword [esp], 0
mov dword [esi + 0x4c], edi
mov dword [esp + 4], edi
mov eax, dword [esi + 0x230]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov eax, dword [esi + 0xd0]
mov dword [esp + 0x14], eax
call dword [0x446180]
mov dword [esi + 0x2b4], eax
mov eax, dword [esi + 0x368]
mov cl, byte [eax]
mov byte [esi + 0x1d8], cl
mov eax, dword [esi + 0xcc]
mov word [eax], 0x51dc
mov word [eax + 2], 0x11b0
xor ecx, ecx
cmp ecx, 2
jae 0x410a7a
mov eax, dword [esi + 0xcc]
mov di, word [eax + ecx*2]
mov ebx, ecx
xor ebx, 0x4279
mov edx, ecx
shl edx, 1
and edx, 0x7b0c
sub edx, ebx
xor dx, di
add dx, 0x13c8
mov word [eax + ecx*2], dx
add ecx, 1
jmp 0x410a46
mov eax, dword [esi + 0xcc]
mov ecx, dword [eax]
cmp dword [esi + 0x2b4], ecx
je 0x410aa4
jmp 0x410a8c
sub esp, 4
mov eax, dword [esi + 0x4c]
mov dword [esp], eax
call fcn.00408140
add esp, 4
jmp 0x410a9f
jmp 0x411162
mov eax, dword [esi + 0xd0]
mov eax, dword [eax]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410ac2
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408130
add esp, 4
mov edi, dword [0x446180]
mov ebx, dword [esi + 0xd0]
mov ecx, dword [ebx]
xor edx, edx
sub esp, 0x18
mov dword [esp], 0
mov edx, dword [esi + 0x4c]
mov dword [esp + 4], edx
mov edx, dword [esi + 0x230]
mov dword [esp + 8], edx
mov dword [esi + 0xa4], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], ebx
call edi
cmp eax, 0
mov edi, dword [esi + 4]
jge 0x410b45
jmp 0x410b19
sub esp, 4
mov eax, dword [esi + 0x4c]
mov dword [esp], eax
call fcn.00408140
add esp, 4
jmp 0x410b2c
sub esp, 4
mov eax, dword [esi + 0xa4]
mov dword [esp], eax
call fcn.00408140
add esp, 4
jmp 0x411160
jmp 0x410b47
sub esp, 4
mov eax, dword [esi + 0x4c]
mov dword [esp], eax
call fcn.00408140
add esp, 4
mov eax, dword [esi + 0x360]
mov al, byte [eax]
mov byte [esi + 0x1dc], al
mov edx, dword [esi + 0x364]
mov word [edx], 0x5327
movzx eax, word [edx]
mov ecx, eax
and ecx, 0xbdd1
shl ecx, 1
add eax, 0x88f2bdd1
sub eax, ecx
mov ecx, eax
shl ecx, 1
and ecx, 0x22ee
xor eax, 0x1177
add eax, ecx
add ax, 1
mov word [edx], ax
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], edx
call fcn.00401870
add esp, 8
mov dword [esi + 0x58], 0
cmp eax, 0
je 0x410c23
sub esp, 4
mov dword [esi + 0x2b8], eax
mov dword [esp], eax
call fcn.004135d0
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 0x410bec
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408130
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x58], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x2b8]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040aab0
add esp, 0x10
mov eax, dword [esi + 0x358]
mov al, byte [eax]
mov byte [esi + 0x1e0], al
mov ecx, dword [esi + 0x35c]
mov word [ecx], 0x7e38
mov ax, word [ecx]
xor ax, 0xb8d0
add ax, 0x3980
mov word [ecx], ax
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], ecx
call fcn.00401b80
add esp, 8
cmp eax, 0
setne al
and al, 1
mov byte [esi + 0x3d], al
mov eax, dword [esi + 0x354]
mov al, byte [eax]
mov byte [esi + 0x1e4], al
mov eax, dword [esi + 0x64]
mov word [eax], 0x1d5a
mov word [eax + 2], 0x95f0
xor edi, edi
cmp edi, 2
jae 0x410cd8
mov eax, dword [esi + 0x64]
mov bx, word [eax + edi*2]
movzx eax, bx
mov dword [esi + 0x294], eax
mov ecx, edi
and ecx, 0xec96cbc7
mov eax, edi
and eax, 0xec96cbc7
xor eax, 0xffffffff
mov edx, edi
add edx, 0xec96cbc8
add edx, eax
add edx, ecx
mov eax, edx
and eax, dword [esi + 0x294]
shl eax, 1
sub edx, eax
add dx, bx
add dx, 0xa1c8
mov eax, dword [esi + 0x64]
mov word [eax + edi*2], dx
add edi, 1
jmp 0x410c85
sub esp, 8
mov edi, dword [ebp + 8]
mov dword [esp], edi
mov eax, dword [esi + 0x64]
mov dword [esp + 4], eax
call fcn.00401a80
add esp, 8
mov dword [esi + 0x258], eax
cmp eax, 0
setne al
xor ebx, ebx
test al, 1
mov edi, 0
jne 0x410d0c
jmp 0x411036
sub esp, 4
mov eax, dword [esi + 0x258]
mov dword [esp], eax
call fcn.00401f30
add esp, 4
mov ebx, eax
mov ecx, 0xc
mov eax, ebx
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 0x410d62
mov edx, eax
sub esp, 4
mov dword [esp], edx
call fcn.00408130
add esp, 4
mov edi, eax
mov dword [edi], ebx
add edi, 4
cmp ebx, 0
mov dword [esi + 0x54], ebx
je 0x410da9
imul eax, ebx, 0xc
mov ecx, edi
add ecx, eax
mov ebx, edi
mov dword [esi + 0x29c], ecx
jmp 0x410d90
mov ecx, ebx
call fcn.00413700
mov ecx, dword [esi + 0x29c]
add ebx, 0xc
cmp ebx, ecx
jne 0x410d90
mov ebx, dword [esi + 0x54]
jmp 0x410da9
mov dword [esi + 0x25c], edi
xor ecx, ecx
jmp 0x410db3
cmp ecx, ebx
jb 0x410dc2
mov edi, dword [esi + 0x25c]
jmp 0x411036
sub esp, 8
mov eax, dword [esi + 0x258]
mov dword [esp], eax
mov dword [esi + 0x2f4], ecx
mov dword [esp + 4], ecx
call fcn.00401f40
add esp, 8
mov ebx, eax
mov eax, dword [esi + 0x350]
mov al, byte [eax]
mov byte [esi + 0x1e8], al
mov eax, dword [esi + 0xc8]
mov word [eax], 0x90d7
mov word [eax + 2], 0x6b3
xor eax, eax
mov dword [esi + 0x248], ebx
cmp eax, 2
jae 0x410e59
mov ebx, dword [esi + 0xc8]
movzx edx, word [ebx + eax*2]
mov ecx, eax
add ecx, 0x38cc8930
mov edi, ecx
xor edi, 0xaa0bad8e
shl ecx, 1
and ecx, 0xabe8a4e2
sub ecx, edi
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x45de
xor ecx, 0x22ef
add ecx, edx
add cx, 1
mov word [ebx + eax*2], cx
mov ebx, dword [esi + 0x248]
add eax, 1
jmp 0x410e09
sub esp, 8
mov dword [esp], ebx
mov eax, dword [esi + 0xc8]
mov dword [esp + 4], eax
call fcn.00401870
add esp, 8
mov dword [esi + 0x2f0], eax
mov eax, dword [esi + 0x34c]
mov al, byte [eax]
mov byte [esi + 0x1ec], al
mov eax, dword [esi + 0xc4]
mov word [eax], 0x6553
mov word [eax + 2], 0xe3f7
xor eax, eax
cmp eax, 2
jae 0x410ec0
mov edi, dword [esi + 0xc4]
mov cx, word [edi + eax*2]
mov dx, ax
add dx, 0x8dc6
xor dx, cx
add dx, 0x91d0
mov word [edi + eax*2], dx
add eax, 1
jmp 0x410e98
sub esp, 8
mov dword [esp], ebx
mov eax, dword [esi + 0xc4]
mov dword [esp + 4], eax
call fcn.00401870
add esp, 8
mov dword [esi + 0x2e8], eax
mov eax, dword [esi + 0x348]
mov al, byte [eax]
mov byte [esi + 0x1f0], al
mov eax, dword [esi + 0xc0]
mov word [eax], 0xf906
mov word [eax + 2], 0x5d09
xor eax, eax
cmp eax, 2
jae 0x410f48
mov ebx, dword [esi + 0xc0]
movzx edx, word [ebx + eax*2]
mov ecx, eax
add ecx, 0x677c673a
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 2
xor edx, 2
mov edi, 0x39d0
sub edi, ecx
and edi, 0xfffe
or ecx, 0xfffe
xor edi, ecx
add edi, edx
mov word [ebx + eax*2], di
mov ebx, dword [esi + 0x248]
add eax, 1
jmp 0x410eff
sub esp, 8
mov dword [esp], ebx
mov eax, dword [esi + 0xc0]
mov dword [esp + 4], eax
call fcn.00401b80
add esp, 8
cmp eax, 0
setg byte [esi + 0x3a]
mov eax, dword [esi + 0x344]
mov al, byte [eax]
mov byte [esi + 0x1f4], al
mov eax, dword [esi + 0x60]
mov word [eax], 0x74e2
mov word [eax + 2], 0x9fe1
xor eax, eax
cmp eax, 2
jae 0x410fc9
mov ecx, dword [esi + 0x60]
movzx edx, word [ecx + eax*2]
mov ecx, eax
add ecx, 0x5ad858d9
mov edi, ecx
and edi, edx
shl edi, 1
add ecx, edx
sub ecx, edi
mov edx, ecx
and edx, 0xc6c9
xor edx, 0xc6c9
and ecx, 0x3936
sub ecx, edx
add cx, 1
mov edx, dword [esi + 0x60]
mov word [edx + eax*2], cx
add eax, 1
jmp 0x410f85
sub esp, 8
mov dword [esp], ebx
mov eax, dword [esi + 0x60]
mov dword [esp + 4], eax
call fcn.00401b80
add esp, 8
xor edx, edx
cmp eax, 0
setg al
mov ebx, dword [esi + 0x2f4]
imul edi, ebx, 0xc
mov ecx, dword [esi + 0x25c]
add ecx, edi
sub esp, 0x10
mov edi, dword [esi + 0x2f0]
mov dword [esp + 4], edi
mov edi, dword [esi + 0x2e8]
mov dword [esp], edi
mov dl, al
and edx, 1
mov dword [esp + 0xc], edx
xor eax, eax
mov dl, byte [esi + 0x3a]
mov al, dl
and eax, 1
mov dword [esp + 8], eax
call fcn.00413720
mov ecx, ebx
sub ecx, 0xffffffff
mov ebx, dword [esi + 0x54]
jmp 0x410db3
mov dword [esi + 0x54], ebx
mov ebx, dword [esi + 0x340]
mov ecx, ebx
call fcn.00413880
mov eax, dword [esi + 0x26c]
mov dword [ebx], eax
mov eax, dword [esi + 0xa8]
mov dword [ebx + 4], eax
mov eax, dword [esi + 0xa4]
mov dword [ebx + 8], eax
mov eax, dword [esi + 0x58]
mov dword [ebx + 0xc], eax
mov al, byte [esi + 0x3d]
mov byte [ebx + 0x10], al
sub esp, 4
mov ecx, dword [esi + 0x5c]
mov dword [esp], 2
call fcn.00408d40
sub esp, 0x10
mov eax, dword [esi + 0x5c]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov eax, dword [esi + 0x54]
mov dword [esp + 0xc], eax
call fcn.004140c0
add esp, 0x10
mov ecx, dword [esi + 0x5c]
call fcn.004098a0
cmp edi, 0
je 0x4110ef
mov ecx, edi
add ecx, 0xfffffffc
imul eax, dword [edi - 4], 0xc
mov ebx, edi
add ebx, eax
cmp edi, ebx
sete al
test al, 1
jne 0x4110e1
jmp 0x4110c3
mov dword [esi + 0x2a8], ecx
jmp 0x4110cb
add ebx, 0xfffffff4
mov ecx, ebx
call fcn.004138b0
cmp ebx, edi
jne 0x4110cb
mov ecx, dword [esi + 0x2a8]
jmp 0x4110e1
sub esp, 4
mov dword [esp], ecx
call fcn.00408140
add esp, 4
jmp 0x4110f1
sub esp, 4
mov eax, dword [esi + 0x26c]
mov dword [esp], eax
call fcn.00408140
add esp, 4
jmp 0x411107
jmp 0x411109
sub esp, 4
mov eax, dword [esi + 0xa4]
mov dword [esp], eax
call fcn.00408140
add esp, 4
mov eax, dword [esi + 0xa8]
cmp eax, 0
je 0x411136
sub esp, 4
mov dword [esp], eax
call fcn.00408140
add esp, 4
cmp dword [esi + 0x58], 0
sete al
jmp 0x41113f
test al, 1
jne 0x411156
jmp 0x411145
sub esp, 4
mov eax, dword [esi + 0x58]
mov dword [esp], eax
call fcn.00408140
add esp, 4
mov ecx, dword [esi + 0x5c]
call fcn.00408e20
jmp 0x411160
jmp 0x411162
jmp 0x411164
jmp 0x4118a2
call fcn.00413a30
mov eax, dword [esi + 0x338]
mov al, byte [eax]
mov byte [esi + 0x1f8], al
call fcn.00413a30
call fcn.00413a30
mov edx, dword [esi + 0x33c]
mov word [edx], 0x5213
movzx eax, word [edx]
mov ecx, eax
xor ecx, 0x311
and ecx, 0x2777
xor eax, 0xac66
lea eax, [eax + ecx*2 + 1]
mov word [edx], ax
sub esp, 8
mov dword [esp + 4], edx
mov dword [esp], edi
call fcn.00401870
add esp, 8
mov ebx, eax
mov eax, dword [esi + 0x330]
mov al, byte [eax]
mov byte [esi + 0x1fc], al
mov ecx, dword [esi + 0x334]
mov word [ecx], 0x5847
movzx eax, word [ecx]
xor eax, 0xfffff5af
add eax, 0x5288
mov word [ecx], ax
sub esp, 8
mov dword [esp + 4], ecx
mov dword [esp], edi
call fcn.00401870
add esp, 8
test ebx, ebx
sete dl
mov dword [esi + 0x224], eax
test eax, eax
sete cl
or dl, cl
test dl, 1
jne 0x411216
jmp 0x41121b
jmp 0x4118a0
sub esp, 4
mov dword [esi + 0x2c8], ebx
mov dword [esp], ebx
call fcn.004135d0
add esp, 4
mov ebx, eax
sub ebx, 0x25362be
add ebx, 1
add ebx, 0x25362be
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411258
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408130
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x268], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x2c8]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040aab0
add esp, 0xc
mov eax, dword [esi + 0x224]
mov dword [esp], eax
call fcn.004135d0
add esp, 4
mov ebx, eax
mov dword [esi + 0x238], ebx
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4112c6
mov ecx, eax
mov dword [esi + 4], edi
sub esp, 4
mov dword [esp], ecx
call fcn.00408130
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 + 0x224]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040aab0
add esp, 0x10
xor eax, eax
sub esp, 0x18
mov dword [esp], 0
mov dword [esi + 0x50], edi
mov dword [esp + 4], edi
mov eax, dword [esi + 0x238]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov eax, dword [esi + 0xbc]
mov dword [esp + 0x14], eax
call dword [0x446180]
mov dword [esi + 0x2c0], eax
mov eax, dword [esi + 0x32c]
mov cl, byte [eax]
mov byte [esi + 0x200], cl
mov eax, dword [esi + 0xb8]
mov word [eax], 0xd61f
mov word [eax + 2], 0x97fd
xor ecx, ecx
cmp ecx, 2
jae 0x4113b2
mov eax, dword [esi + 0xb8]
movzx ebx, word [eax + ecx*2]
mov edi, ecx
add edi, 0x5a57af1c
mov edx, ebx
shl edx, 1
xor edx, 0xffffffff
add edx, ebx
and edx, edi
mov edi, edx
shl edi, 1
xor edi, 0xffffffff
add edx, edi
mov edi, 0x50e3
sub edi, ecx
and edi, ebx
mov ebx, edi
shl ebx, 1
xor ebx, 0xffffffff
add edi, ebx
and edx, edi
mov di, 0x871f
sub di, dx
mov word [eax + ecx*2], di
add ecx, 1
jmp 0x411363
mov eax, dword [esi + 0xb8]
mov ecx, dword [eax]
cmp dword [esi + 0x2c0], ecx
mov eax, dword [esi + 0xbc]
je 0x4113e0
jmp 0x4113ca
sub esp, 4
mov eax, dword [esi + 0x50]
mov dword [esp], eax
call fcn.00408140
add esp, 4
jmp 0x41189e
mov eax, dword [eax]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4113f8
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408130
add esp, 4
mov edi, dword [0x446180]
mov ebx, dword [esi + 0xbc]
mov ecx, dword [ebx]
xor edx, edx
sub esp, 0x18
mov dword [esp], 0
mov edx, dword [esi + 0x50]
mov dword [esp + 4], edx
mov edx, dword [esi + 0x238]
mov dword [esp + 8], edx
mov dword [esi + 0x9c], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], ebx
call edi
cmp eax, 0
jge 0x41147c
jmp 0x41144c
sub esp, 4
mov eax, dword [esi + 0x50]
mov dword [esp], eax
call fcn.00408140
add esp, 4
mov eax, dword [esi + 0x9c]
jmp 0x411465
jmp 0x411467
sub esp, 4
mov dword [esp], eax
call fcn.00408140
add esp, 4
jmp 0x411477
jmp 0x41189c
jmp 0x41147e
sub esp, 4
mov eax, dword [esi + 0x50]
mov dword [esp], eax
call fcn.00408140
add esp, 4
jmp 0x411491
mov eax, dword [esi + 0x324]
mov al, byte [eax]
mov byte [esi + 0x204], al
mov edx, dword [esi + 0x328]
mov word [edx], 0x835c
movzx ecx, word [edx]
mov eax, ecx
or eax, 0xa1238054
xor ecx, 0xffffffff
or ecx, 0x7fab
and eax, ecx
add eax, 0xf6e3fd5f
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
mov word [edx], ax
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.00401b80
add esp, 8
cmp eax, 0
setne al
and al, 1
mov byte [esi + 0x3b], al
mov eax, dword [esi + 0x320]
mov al, byte [eax]
mov byte [esi + 0x208], al
mov eax, dword [esi + 0xb4]
mov word [eax], 0x5328
mov word [eax + 2], 0xdc96
xor eax, eax
cmp eax, 2
jae 0x41155e
mov ebx, dword [esi + 0xb4]
movzx edx, word [ebx + eax*2]
mov edi, eax
xor edi, 0x14a31883
mov ecx, eax
shl ecx, 1
and ecx, 0xd6b9cef8
sub ecx, edi
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x882e
xor ecx, 0xa518c417
mov edi, ecx
add edi, edx
and ecx, 1
or edi, 1
add edi, ecx
mov word [ebx + eax*2], di
add eax, 1
jmp 0x411514
sub esp, 8
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [esi + 0xb4]
mov dword [esp + 4], eax
call fcn.00401a80
add esp, 8
mov dword [esi + 0x250], eax
cmp eax, 0
setne cl
xor eax, eax
test cl, 1
mov edi, 0
jne 0x411596
jmp 0x4117a4
sub esp, 4
mov eax, dword [esi + 0x250]
mov dword [esp], eax
call fcn.00401f30
add esp, 4
mov edi, eax
mov ecx, 8
mov eax, edi
mul ecx
seto cl
add eax, 4
setb dl
mov ch, cl
and ch, dl
xor cl, dl
or cl, ch
mov edx, 0xffffffff
test cl, 1
jne 0x4115d2
mov edx, eax
sub esp, 4
mov dword [esp], edx
call fcn.00408130
add esp, 4
mov dword [eax], edi
add eax, 4
cmp edi, 0
mov dword [esi + 8], eax
je 0x411615
mov ecx, edi
shl ecx, 3
mov edx, eax
add edx, ecx
mov dword [esi + 0x298], edx
mov ebx, eax
mov ecx, ebx
call fcn.004138e0
add ebx, 8
cmp ebx, dword [esi + 0x298]
jne 0x4115fe
mov eax, dword [esi + 8]
jmp 0x411615
xor ecx, ecx
jmp 0x411619
cmp ecx, edi
jb 0x411622
jmp 0x4117a4
mov dword [esi + 0x98], edi
sub esp, 8
mov eax, dword [esi + 0x250]
mov dword [esp], eax
mov dword [esi + 0x2ec], ecx
mov dword [esp + 4], ecx
call fcn.00401f40
add esp, 8
mov dword [esi + 0x228], eax
mov eax, dword [esi + 0x31c]
mov al, byte [eax]
mov byte [esi + 0x20c], al
mov eax, dword [esi + 0xb0]
mov word [eax], 0x140b
mov word [eax + 2], 0xa7af
xor eax, eax
cmp eax, 2
jae 0x4116ba
mov ebx, dword [esi + 0xb0]
movzx edi, word [ebx + eax*2]
mov edx, eax
add edx, 0x2be6cd5e
mov ecx, edi
xor ecx, 0xffffffff
and edx, ecx
mov ecx, 0x32a1
sub ecx, eax
and ecx, edi
or ecx, edx
mov edx, ecx
and edx, 0xc10e
xor edx, 0xc10e
and ecx, 0x3ef1
sub ecx, edx
add cx, 0x561e
mov word [ebx + eax*2], cx
add eax, 1
jmp 0x41166d
sub esp, 8
mov eax, dword [esi + 0x228]
mov dword [esp], eax
mov eax, dword [esi + 0xb0]
mov dword [esp + 4], eax
call fcn.00401870
add esp, 8
mov dword [esi + 0x2c4], eax
mov eax, dword [esi + 0x318]
mov al, byte [eax]
mov byte [esi + 0x210], al
mov eax, dword [esi + 0xac]
mov word [eax], 0x18c4
mov word [eax + 2], 0x9622
xor eax, eax
cmp eax, 2
jae 0x41174e
mov ebx, dword [esi + 0xac]
movzx edx, word [ebx + eax*2]
mov ecx, eax
add ecx, 0x7d69
mov edi, eax
add edi, 0x7d69
and edi, edx
shl edi, 1
add ecx, edx
sub ecx, edi
add cx, 0x14b8
mov word [ebx + eax*2], cx
mov ecx, eax
or ecx, 0x8b90070e
shl eax, 1
sub eax, ecx
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
add eax, 0x8b90070e
jmp 0x4116ff
sub esp, 8
mov eax, dword [esi + 0x228]
mov dword [esp], eax
mov eax, dword [esi + 0xac]
mov dword [esp + 4], eax
call fcn.00401870
add esp, 8
mov edi, dword [esi + 0x2ec]
mov edx, edi
shl edx, 3
mov ecx, dword [esi + 8]
add ecx, edx
sub esp, 8
mov dword [esp], eax
mov eax, dword [esi + 0x2c4]
mov dword [esp + 4], eax
call fcn.004138f0
mov ecx, edi
sub ecx, 0xffffffff
mov edi, dword [esi + 0x98]
mov eax, dword [esi + 8]
jmp 0x411619
mov dword [esi + 0x98], edi
mov dword [esi + 8], eax
mov ebx, dword [esi + 0x314]
mov ecx, ebx
call fcn.00413880
mov eax, dword [esi + 0x268]
mov dword [ebx], eax
mov dword [ebx + 4], 0
mov eax, dword [esi + 0x9c]
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], 0
mov al, byte [esi + 0x3b]
mov byte [ebx + 0x10], al
sub esp, 4
mov edi, dword [esi + 0x278]
mov ecx, edi
mov dword [esp], 3
call fcn.00408d40
sub esp, 0x10
mov dword [esp], edi
mov dword [esp + 4], ebx
mov eax, dword [esi + 8]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x98]
mov dword [esp + 0xc], eax
call fcn.0041df50
add esp, 0x10
mov ecx, edi
call fcn.004098a0
mov ecx, dword [esi + 8]
cmp ecx, 0
je 0x411863
mov edi, ecx
add edi, 0xfffffffc
mov eax, dword [ecx - 4]
shl eax, 3
mov ebx, ecx
add ebx, eax
cmp ecx, ebx
je 0x411855
jmp 0x41183d
add ebx, 0xfffffff8
mov ecx, ebx
call fcn.004139b0
cmp ebx, dword [esi + 8]
sete al
test al, 1
jne 0x411853
jmp 0x41183d
jmp 0x411855
sub esp, 4
mov dword [esp], edi
call fcn.00408140
add esp, 4
jmp 0x411865
sub esp, 4
mov eax, dword [esi + 0x9c]
mov dword [esp], eax
call fcn.00408140
add esp, 4
jmp 0x41187b
sub esp, 4
mov eax, dword [esi + 0x268]
mov dword [esp], eax
call fcn.00408140
add esp, 4
mov ecx, dword [esi + 0x278]
call fcn.00408e20
jmp 0x41189c
jmp 0x41189e
jmp 0x4118a0
jmp 0x4118a2
mov ebx, dword [esi + 0x310]
mov edi, dword [esi + 0x274]
jmp 0x4118b0
add edi, 1
jmp 0x40f0a5
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret