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

Disassembly:
push edi
push esi
sub esp, 0x104
mov eax, dword [esp + 0x11c]
mov ecx, dword [esp + 0x118]
mov edx, dword [esp + 0x114]
mov esi, dword [esp + 0x110]
xor edi, edi
mov dword [esp + 0xfc], eax
mov dword [esp + 0xf8], ecx
mov dword [esp + 0xf4], edx
mov dword [esp + 0xf0], esi
mov eax, dword [0x48f0f4]
xor eax, 0xcabfedb5
mov dword [0x48f0f4], eax
mov eax, dword [0x495d60]
mov ecx, eax
dec ecx
mov dword [0x495d60], ecx
mov ecx, dword [0x495f18]
and ecx, eax
mov dword [0x495f18], ecx
mov eax, dword [0x48dcd8]
mov ecx, eax
dec ecx
mov dword [0x48dcd8], ecx
xor eax, 0xc108641e
mov ecx, dword [0x495c60]
imul ecx, eax
mov dword [0x495c60], ecx
mov eax, dword [esp + 0xfc]
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x7c], edi
call fcn.00440a00
cmp eax, 0
jne 0x403453
mov dword [esp + 0x100], 0xfffffff4
jmp 0x404f7f
mov eax, dword [0x494094]
mov cx, word [0x49c83e]
movsx edx, cx
xor eax, edx
mov edx, dword [0x4955b0]
xor edx, eax
mov dword [0x4955b0], edx
mov eax, esp
lea edx, [esp + 0xa0]
mov dword [eax + 0x10], edx
lea edx, [esp + 0xac]
mov dword [eax + 0xc], edx
lea edx, [esp + 0xb8]
mov dword [eax + 8], edx
lea edx, [esp + 0xc4]
mov dword [eax + 4], edx
lea edx, [esp + 0xd0]
mov dword [eax], edx
mov dword [eax + 0x14], 0
call fcn.00418650
mov cx, word [0x497abe]
mov ax, cx
imul eax, eax, 0x7b0bc4c7
mov cx, ax
mov word [0x497abe], cx
mov eax, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
mov dword [esp], edx
mov dword [esp + 4], eax
call fcn.00440dd0
cmp eax, 0
jge 0x4035ff
mov eax, 0xc3a53dd1
mov cx, word [0x498550]
movsx edx, cx
shl edx, 9
mov esi, dword [0x48ccb4]
xor esi, 0xffffffff
xor edx, esi
cmp eax, edx
jg 0x40354a
mov eax, 0xca881c45
mov ecx, dword [0x48d5e0]
dec ecx
mov dword [0x48d5e0], ecx
cmp eax, ecx
jne 0x403545
mov ax, word [0x49717a]
movsx ecx, ax
mov edx, dword [0x496ce4]
imul edx, ecx
mov dword [0x496ce4], edx
jmp 0x40354a
cmp dword [esp + 0xf0], 0
je 0x40358f
xor eax, eax
mov ecx, dword [esp + 0xf0]
mov dword [esp], ecx
mov dword [esp + 4], 0
mov dword [esp + 0x78], eax
call fcn.00443ab0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x40358a
jmp 0x404eff
jmp 0x40358f
mov eax, dword [0x48d6b4]
or eax, 0xfd7f93eb
mov dword [0x48d6b4], eax
cmp dword [esp + 0xf4], 0
je 0x4035e0
mov eax, dword [esp + 0xf8]
mov ecx, dword [esp + 0xf4]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.0042d0c0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x4035db
jmp 0x404eff
jmp 0x4035e0
mov eax, dword [0x4901fc]
or eax, 0xe62f9143
mov dword [0x4901fc], eax
mov dword [esp + 0x100], 0
jmp 0x404f7f
mov eax, 0xa938cfe1
mov cx, word [0x498314]
movsx edx, cx
cmp eax, edx
jne 0x403625
mov eax, dword [0x48fc8c]
add eax, 0xec5bd6c8
mov dword [0x48fc8c], eax
lea eax, [esp + 0xd0]
mov ecx, dword [esp + 0xf8]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0042d0c0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x403654
jmp 0x404eff
lea eax, [esp + 0xc4]
mov ecx, dword [0x48ba2c]
or ecx, 0x719d9df2
mov dword [0x48ba2c], ecx
mov ecx, dword [esp + 0xfc]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0042d0c0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x403695
jmp 0x404eff
mov eax, 0x90ec44e0
mov cx, word [0x499a46]
movsx edx, cx
sar edx, 4
sub edx, 0xe4f0b061
add edx, 0x5a0032ef
cmp eax, edx
jne 0x4036e6
mov eax, 0xedf9dfdf
mov cx, word [0x49a89e]
movsx edx, cx
cmp eax, edx
jge 0x4036e1
mov eax, dword [0x490a60]
add eax, 0xf16c2a3d
mov dword [0x490a60], eax
jmp 0x4036e6
mov dword [esp + 0xc4], 1
mov dword [esp + 0xd0], 1
mov eax, dword [0x495e00]
mov ecx, dword [0x495dbc]
mov edx, ecx
inc edx
mov dword [0x495dbc], edx
xor eax, ecx
xor eax, 0xb531c9c9
cmp eax, 0x9f6effef
jl 0x403731
mov eax, dword [0x48edf0]
and eax, 0xd23975eb
mov dword [0x48edf0], eax
lea eax, [esp + 0xb8]
mov ecx, dword [esp + 0xf8]
mov ecx, dword [ecx + 4]
add ecx, 2
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00439d30
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x403766
jmp 0x404eff
lea eax, [esp + 0xb8]
xor ecx, ecx
mov dx, word [0x49b388]
movsx esi, dx
not esi
and esi, 0xe0c2546c
mov edi, dword [0x4964c4]
sub edi, esi
mov dword [0x4964c4], edi
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x74], ecx
call fcn.00443ab0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x4037b8
jmp 0x404eff
lea eax, [esp + 0xac]
mov ecx, 2
mov edx, dword [0x48c5d0]
and edx, 0xb2e15494
mov dword [0x48c5d0], edx
mov dword [esp], eax
mov dword [esp + 4], 2
mov dword [esp + 0x70], ecx
call fcn.00439d30
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x4037ff
jmp 0x404eff
lea eax, [esp + 0xa0]
mov ecx, 3
mov edx, dword [0x490ef0]
add edx, 0x54948d6d
mov dword [0x490ef0], edx
mov dword [esp], eax
mov dword [esp + 4], 3
mov dword [esp + 0x6c], ecx
call fcn.00439d30
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x403846
jmp 0x404eff
mov ax, word [0x49ab9e]
mov cx, ax
or ecx, 0x381f
mov ax, cx
mov word [0x49ab9e], ax
mov ecx, esp
lea edx, [esp + 0xc4]
mov dword [ecx], edx
call fcn.0040a810
mov ecx, eax
sar ecx, 0x1f
shr ecx, 0x1b
mov edx, eax
add edx, ecx
and edx, 0xffffffe0
sub eax, edx
mov dword [esp + 0xdc], eax
mov eax, dword [0x48facc]
sar eax, 7
mov ecx, dword [0x491fd4]
or ecx, eax
mov dword [0x491fd4], ecx
cmp dword [esp + 0xdc], 0x1f
jge 0x4039c2
mov eax, 0x5f9edfd6
mov ecx, dword [0x48af70]
inc ecx
mov dword [0x48af70], ecx
cmp eax, ecx
jl 0x4038dc
mov eax, dword [0x490170]
mov ecx, dword [0x496c9c]
xor ecx, eax
mov dword [0x496c9c], ecx
jmp 0x4038f9
mov eax, dword [0x496628]
add eax, 0x26cf91ee
xor eax, 0x34f450a2
mov ecx, dword [0x48deb0]
sub ecx, eax
mov dword [0x48deb0], ecx
lea eax, [esp + 0xd0]
mov ecx, dword [esp + 0xdc]
mov edx, 0x1f
sub edx, ecx
mov dword [esp + 0xdc], edx
mov ecx, dword [0x4901a8]
xor ecx, 0xb094a062
mov dword [0x4901a8], ecx
mov ecx, dword [esp + 0xdc]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00445d30
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x40394f
jmp 0x404eff
lea eax, [esp + 0xc4]
mov ecx, dword [0x48ee08]
sar ecx, 6
mov edx, dword [0x48aac8]
mov esi, edx
dec esi
mov dword [0x48aac8], esi
add edx, 0x5a40bf7a
and ecx, edx
mov edx, dword [0x48d1a8]
imul edx, ecx
mov dword [0x48d1a8], edx
mov ecx, dword [esp + 0xdc]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00445d30
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x4039ad
jmp 0x404eff
mov eax, dword [0x48c234]
imul eax, eax, 0xfffef7ff
mov dword [0x48c234], eax
jmp 0x4039cd
mov dword [esp + 0xdc], 0
mov eax, 0xb37f3294
mov ecx, dword [0x492c88]
xor ecx, 0x784276bd
mov dword [0x492c88], ecx
mov ecx, dword [esp + 0xd4]
dec ecx
mov dword [esp + 0xe4], ecx
mov ecx, dword [0x497074]
add ecx, 0x75bdfa4b
xor ecx, 0xa027dbb3
mov edx, dword [0x492c58]
sub edx, ecx
mov dword [0x492c58], edx
mov ecx, dword [esp + 0xc8]
dec ecx
mov dword [esp + 0xe0], ecx
mov ecx, dword [0x48f4d8]
mov edx, ecx
dec edx
mov dword [0x48f4d8], edx
imul ecx, ecx, 0xc718b45e
mov edx, 0x92479053
sub edx, ecx
mov ecx, dword [0x4901d8]
and ecx, edx
mov dword [0x4901d8], ecx
mov ecx, dword [esp + 0xe4]
mov edx, dword [esp + 0xe0]
sub ecx, edx
shl ecx, 5
mov edx, esp
mov dword [edx + 4], ecx
lea ecx, [esp + 0xc4]
mov dword [edx], ecx
mov dword [esp + 0x68], eax
call fcn.00445d30
mov ecx, dword [0x49224c]
shl ecx, 8
or ecx, 0x37011cb4
mov edx, dword [esp + 0x68]
cmp edx, ecx
mov dword [esp + 0x64], eax
jge 0x403aa5
mov eax, dword [0x48db50]
imul eax, eax, 0xde948380
mov dword [0x48db50], eax
jmp 0x403aaa
lea eax, [esp + 0xd0]
lea ecx, [esp + 0xc4]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0041b240
cmp eax, 0
jl 0x403b6b
mov ax, word [0x4997f4]
mov cx, ax
add ecx, 0xfe648ec2
mov ax, cx
mov word [0x4997f4], ax
mov ecx, dword [esp + 0xe4]
mov edx, dword [esp + 0xe0]
sub ecx, edx
mov edx, dword [esp + 0xc0]
mov esi, dword [edx + ecx*4]
inc esi
mov dword [edx + ecx*4], esi
mov ax, word [0x499168]
movsx ecx, ax
add ecx, 0x9be0e39d
and ecx, 0x87206815
cmp ecx, 0xe7ffee5a
jne 0x403b33
mov eax, dword [0x496480]
add eax, 0xeaf82e66
mov dword [0x496480], eax
mov eax, esp
lea ecx, [esp + 0xc4]
mov dword [eax + 8], ecx
lea ecx, [esp + 0xd0]
mov dword [eax + 4], ecx
mov dword [eax], ecx
call fcn.0043cce0
mov ecx, dword [0x4917ac]
xor ecx, 0x7fef78db
mov dword [0x4917ac], ecx
mov dword [esp + 0x60], eax
jmp 0x403aaa
mov eax, 0x195fe11d
mov ecx, dword [0x48c044]
sar ecx, 0xa
sub ecx, 0x812f3b84
or ecx, 0x408de1ec
cmp eax, ecx
je 0x403ba3
mov eax, dword [0x496fbc]
shl eax, 0xa
mov ecx, dword [0x48c8e0]
or ecx, eax
mov dword [0x48c8e0], ecx
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xe0]
sub eax, ecx
shl eax, 5
mov ecx, esp
mov dword [ecx + 4], eax
lea eax, [esp + 0xc4]
mov dword [ecx], eax
call fcn.00417f30
mov dx, word [0x49c828]
mov cx, dx
xor ecx, 0x5e54
mov dx, cx
mov word [0x49c828], dx
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0xe8], ecx
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0xe8]
cmp eax, dword [esp + 0xe0]
jle 0x404b8b
mov eax, dword [0x492b38]
not eax
or eax, 0x64c5
mov cx, ax
mov word [0x499a6a], cx
mov eax, dword [esp + 0xe8]
mov edx, dword [esp + 0xd8]
mov eax, dword [edx + eax*4]
mov edx, dword [esp + 0xe0]
mov esi, dword [esp + 0xcc]
cmp eax, dword [esi + edx*4]
jb 0x403c6b
mov eax, dword [esp + 0xe8]
sub eax, dword [esp + 0xe0]
sub eax, 1
mov ecx, dword [esp + 0xc0]
mov dword [ecx + eax*4], 0xffffffff
jmp 0x4044bd
mov eax, 0x65d978d2
mov ecx, dword [0x495ba4]
add ecx, 0x44080884
mov dword [0x495ba4], ecx
mov dword [0x494ed4], 0x79c4f75e
mov dx, word [0x499850]
mov cx, dx
inc ecx
mov dx, cx
mov word [0x499850], dx
movsx ecx, dx
mov esi, 0xd82547c7
sub esi, ecx
or esi, 0xce93b11d
mov ecx, dword [0x4960c8]
imul ecx, esi
mov dword [0x4960c8], ecx
mov ecx, dword [esp + 0xe0]
mov esi, dword [esp + 0xcc]
mov ecx, dword [esi + ecx*4]
mov dword [esp + 0x84], ecx
mov dx, word [0x498670]
mov cx, dx
and ecx, 0x70fd
mov dx, cx
mov word [0x498670], dx
movzx ecx, word [esp + 0x84]
mov dword [esp + 0x8c], ecx
mov ecx, dword [0x48cc7c]
mov esi, ecx
dec esi
mov dword [0x48cc7c], esi
cmp eax, ecx
jl 0x403d79
mov eax, dword [0x48e308]
or eax, 0x903fd19b
cmp eax, 0xe4f45417
je 0x403d5c
mov eax, dword [0x497024]
mov cx, word [0x49a618]
movsx edx, cx
imul edx, eax
shl edx, 4
mov eax, 0xc2736bf6
sub eax, edx
mov edx, dword [0x495dcc]
xor edx, eax
mov dword [0x495dcc], edx
jmp 0x403d74
mov ax, word [0x49b844]
mov cx, ax
and ecx, 0x5d91
mov ax, cx
mov word [0x49b844], ax
jmp 0x403d79
mov eax, 0xf238b296
movzx ecx, word [esp + 0x86]
mov dword [esp + 0x88], ecx
mov dx, word [0x49839a]
movsx ecx, dx
and ecx, 0x402222b0
mov esi, dword [0x48d1b4]
or esi, ecx
mov dword [0x48d1b4], esi
mov ecx, dword [esp + 0xe8]
mov esi, dword [esp + 0xd8]
mov ecx, dword [esi + ecx*4]
mov esi, dword [esp + 0x88]
xor edx, edx
mov dword [esp + 0x58], eax
mov eax, ecx
div esi
mov dword [esp + 0x98], eax
mov eax, dword [0x4938b8]
mov ecx, dword [0x491838]
mov edx, ecx
dec edx
mov dword [0x491838], edx
mov edx, dword [0x48b03c]
xor edx, 0xffffffff
imul ecx, edx
and eax, ecx
mov ecx, dword [esp + 0x58]
cmp ecx, eax
je 0x403e40
mov eax, 0x135fb909
mov cx, word [0x4974a8]
mov dx, cx
inc edx
mov cx, dx
mov word [0x4974a8], cx
movsx edx, cx
cmp eax, edx
jg 0x403e3b
mov eax, dword [0x49533c]
or eax, 0x9feb
mov cx, ax
mov word [0x499b34], cx
jmp 0x403e73
mov eax, 0xa5facd08
mov ecx, dword [0x494c98]
inc ecx
mov dword [0x494c98], ecx
sub eax, ecx
cmp eax, 0x1489c76
jl 0x403e6e
mov eax, dword [0x49476c]
xor eax, 0xdc911afc
mov dword [0x49476c], eax
jmp 0x403e73
mov eax, dword [esp + 0xe8]
mov ecx, dword [esp + 0xd8]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x98]
imul ecx, edx
sub eax, ecx
mov dword [esp + 0x90], eax
mov eax, dword [0x48e24c]
or eax, 0x95c8dcc1
and eax, 0xffe8dcff
mov ecx, dword [0x4939b8]
sub ecx, eax
mov dword [0x4939b8], ecx
mov eax, dword [esp + 0x90]
shl eax, 0x10
mov dword [esp + 0x90], eax
mov si, word [0x49d202]
mov ax, si
dec eax
mov di, ax
mov word [0x49d202], di
movsx eax, si
and eax, 0xb10a8c8a
mov ecx, dword [0x4946a0]
add ecx, 0x96630340
xor ecx, 0xda8a313a
cmp eax, ecx
je 0x403f26
mov ax, word [0x49bcb2]
mov cx, ax
dec ecx
mov ax, cx
mov word [0x49bcb2], ax
movsx ecx, ax
mov edx, 0x86c19e17
sub edx, ecx
mov dword [0x4923cc], edx
mov eax, 0x6acdaa9a
mov ecx, dword [esp + 0xe8]
mov edx, dword [esp + 0xd8]
movzx ecx, word [edx + ecx*4 - 2]
mov edx, dword [esp + 0x90]
or edx, ecx
mov dword [esp + 0x90], edx
mov ecx, dword [0x48f9dc]
not ecx
mov edx, dword [0x4968ac]
and ecx, edx
or ecx, 0x91e916e5
mov dword [0x48ef94], ecx
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x8c]
imul ecx, edx
mov dword [esp + 0x80], ecx
mov ecx, dword [0x48dbec]
dec ecx
mov dword [0x48dbec], ecx
or ecx, 0xce4e98ba
cmp eax, ecx
jne 0x403fe0
mov eax, 0xadd05236
mov ecx, dword [0x48f138]
sub ecx, 0x5a44daf6
cmp eax, ecx
jg 0x403fdb
mov eax, dword [0x493240]
dec eax
mov dword [0x493240], eax
add eax, 0x5e9617b0
cmp eax, 0x306872c2
jge 0x403fd6
jmp 0x403fd6
jmp 0x403fdb
jmp 0x403fe0
mov eax, dword [esp + 0x90]
cmp eax, dword [esp + 0x80]
jae 0x404117
mov eax, 0x8dc62707
mov cx, word [0x4995b2]
movsx edx, cx
sar edx, 5
cmp eax, edx
jge 0x40401d
mov eax, dword [0x495644]
xor eax, 0xa362c355
mov dword [0x495644], eax
mov eax, 0xb3c2a3ea
mov ecx, dword [esp + 0x98]
dec ecx
mov dword [esp + 0x98], ecx
mov ecx, dword [esp + 0x84]
mov edx, dword [esp + 0x90]
add edx, ecx
mov dword [esp + 0x90], edx
mov ecx, dword [0x494d5c]
mov edx, ecx
dec edx
mov dword [0x494d5c], edx
cmp eax, ecx
jge 0x404096
mov eax, 0xb521655b
mov ecx, dword [0x49302c]
mov edx, ecx
dec edx
mov dword [0x49302c], edx
imul ecx, ecx, 0xf9cc32b2
xor ecx, 0x7be8ccba
cmp eax, ecx
jl 0x404091
mov dword [0x492bc4], 0x5df1bfbd
jmp 0x404096
jmp 0x40409b
xor eax, eax
mov cl, al
mov eax, dword [esp + 0x90]
cmp eax, dword [esp + 0x84]
mov byte [esp + 0x57], cl
jb 0x4040cc
mov eax, dword [esp + 0x90]
cmp eax, dword [esp + 0x80]
setb cl
mov byte [esp + 0x57], cl
mov al, byte [esp + 0x57]
test al, 1
jne 0x4040dd
jmp 0x404108
mov eax, dword [esp + 0x98]
add eax, 0xffffffff
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x84]
add eax, dword [esp + 0x90]
mov dword [esp + 0x90], eax
jmp 0x40409b
mov eax, dword [0x48b910]
add eax, 0x439338d
mov dword [0x48b910], eax
mov eax, 0xe2eee40f
mov ecx, dword [0x48c86c]
mov edx, dword [0x496c5c]
sar edx, 1
sub ecx, edx
mov edx, dword [0x48c42c]
or edx, ecx
mov dword [0x48c42c], edx
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x90]
sub edx, ecx
mov dword [esp + 0x90], edx
mov ecx, dword [0x48f6f0]
add ecx, 0x5df62b2
mov dword [0x48f6f0], ecx
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x88]
xor esi, esi
mov dword [esp + 0x50], eax
mov eax, ecx
mov dword [esp + 0x4c], edx
mov edx, esi
mov ecx, dword [esp + 0x4c]
div ecx
mov dword [esp + 0x9c], eax
mov eax, dword [0x48f4c4]
and eax, 0xb7506642
mov dword [0x48f4c4], eax
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x9c]
imul ecx, edx
sub eax, ecx
mov dword [esp + 0x94], eax
mov dword [0x48f8b8], 0x43c64aa6
mov eax, dword [esp + 0x94]
shl eax, 0x10
mov dword [esp + 0x94], eax
mov eax, dword [0x492fc0]
add eax, eax
mov ecx, dword [0x496a18]
xor ecx, 0xffffffff
sub eax, ecx
mov ecx, dword [esp + 0x50]
cmp ecx, eax
je 0x40420d
mov ax, word [0x497a66]
mov cx, ax
add ecx, 0xb8d33b69
mov ax, cx
mov word [0x497a66], ax
mov eax, 0x93433fd9
mov ecx, dword [esp + 0xe8]
mov edx, dword [esp + 0xd8]
movzx ecx, word [edx + ecx*4 - 4]
mov edx, dword [esp + 0x94]
or edx, ecx
mov dword [esp + 0x94], edx
mov si, word [0x4974d6]
mov cx, si
dec ecx
mov si, cx
mov word [0x4974d6], si
movsx ecx, si
add ecx, 0xfc5b151a
cmp eax, ecx
jle 0x404287
mov ax, word [0x497522]
movsx ecx, ax
shr ecx, 6
add ecx, 0x28e609b9
xor ecx, 0xdb23
mov ax, word [0x49a2ec]
mov dx, ax
add edx, ecx
mov ax, dx
mov word [0x49a2ec], ax
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x8c]
imul eax, ecx
mov dword [esp + 0x80], eax
mov eax, dword [0x490b28]
or eax, 0x1426ab08
mov dword [0x490b28], eax
mov eax, dword [esp + 0x94]
cmp eax, dword [esp + 0x80]
jae 0x40440f
mov eax, dword [0x48fc2c]
xor eax, 0xffffffff
add eax, 0x674844e2
cmp eax, 0xbc020224
jge 0x404326
mov eax, dword [0x493250]
add eax, 0x6475cb36
xor eax, 0x767af2aa
cmp eax, 0x605228c4
jge 0x404309
mov eax, dword [0x493b20]
imul eax, eax, 0x10dc5c20
mov dword [0x493b20], eax
jmp 0x404321
mov ax, word [0x49796e]
mov cx, ax
add ecx, 0x558c2c81
mov ax, cx
mov word [0x49796e], ax
jmp 0x40434b
mov ax, word [0x499e8c]
mov cx, ax
inc ecx
mov ax, cx
mov word [0x499e8c], ax
movsx ecx, ax
mov edx, dword [0x492140]
imul edx, ecx
mov dword [0x492140], edx
mov eax, dword [esp + 0x9c]
dec eax
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x94]
add ecx, eax
mov dword [esp + 0x94], ecx
mov eax, dword [0x48eed0]
shl eax, 9
mov dx, word [0x49a8e4]
movsx ecx, dx
xor eax, ecx
xor eax, 0x83a93d72
mov ecx, dword [0x48b538]
and ecx, eax
mov dword [0x48b538], ecx
xor eax, eax
mov cl, al
mov eax, dword [esp + 0x94]
cmp eax, dword [esp + 0x84]
mov byte [esp + 0x4b], cl
jb 0x4043c9
mov eax, dword [esp + 0x94]
cmp eax, dword [esp + 0x80]
setb cl
mov byte [esp + 0x4b], cl
mov al, byte [esp + 0x4b]
test al, 1
jne 0x4043da
jmp 0x404405
mov eax, dword [esp + 0x9c]
add eax, 0xffffffff
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x84]
add eax, dword [esp + 0x94]
mov dword [esp + 0x94], eax
jmp 0x404398
mov dword [0x4906a8], 0xd588608a
mov eax, dword [0x496674]
or eax, 0x1214608
mov dword [0x496674], eax
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x94]
sub ecx, eax
mov dword [esp + 0x94], ecx
mov eax, dword [0x48cbfc]
mov ecx, dword [0x48d3e8]
mov edx, ecx
dec edx
mov dword [0x48d3e8], edx
sub ecx, 0xf505a9ca
and eax, ecx
cmp eax, 0xfe22dedc
jg 0x404480
mov eax, dword [0x491224]
and eax, 0xe954c5f8
mov cx, word [0x49c244]
movsx edx, cx
or eax, edx
mov edx, dword [0x4907a0]
sub edx, eax
mov dword [0x4907a0], edx
mov eax, dword [esp + 0x98]
shl eax, 0x10
mov ecx, dword [esp + 0x9c]
or eax, ecx
mov ecx, dword [esp + 0xe8]
mov edx, dword [esp + 0xe0]
sub ecx, edx
mov edx, dword [esp + 0xc0]
mov dword [edx + ecx*4 - 4], eax
mov eax, dword [0x48d730]
add eax, 0xed97770a
mov dword [0x48d730], eax
mov eax, dword [0x48adb8]
and eax, 0x311d849f
mov dword [0x48adb8], eax
mov eax, dword [esp + 0xe8]
mov ecx, dword [esp + 0xe0]
sub eax, ecx
mov ecx, dword [esp + 0xc0]
mov edx, dword [ecx + eax*4 - 4]
inc edx
mov dword [ecx + eax*4 - 4], edx
mov eax, dword [0x490fb4]
mov ecx, eax
inc ecx
mov dword [0x490fb4], ecx
add eax, 0x2e4db47c
and eax, 0x1d1cdbb9
mov ecx, dword [0x494184]
xor ecx, eax
mov dword [0x494184], ecx
mov eax, 0x60940d16
mov ecx, dword [0x493d34]
xor ecx, 0xffffffff
or ecx, 0x46565b90
cmp eax, ecx
jge 0x404546
mov ax, word [0x49be24]
mov cx, ax
add ecx, 0xd66fcd0b
mov ax, cx
mov word [0x49be24], ax
lea eax, [esp + 0xac]
xor ecx, ecx
mov edx, dword [esp + 0xe8]
mov esi, dword [esp + 0xe0]
sub edx, esi
mov esi, dword [esp + 0xc0]
mov edi, dword [esi + edx*4 - 4]
dec edi
mov dword [esi + edx*4 - 4], edi
mov edx, dword [0x48d710]
or edx, 0x98a947b2
mov dword [0x48d710], edx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x44], ecx
call fcn.00443ab0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x4045aa
jmp 0x404eff
mov eax, dword [0x492e64]
or eax, 0x6090850e
mov dword [0x492e64], eax
cmp dword [esp + 0xe0], 1
jge 0x4045d2
xor eax, eax
mov dword [esp + 0x40], eax
jmp 0x4045ea
mov eax, dword [esp + 0xe0]
sub eax, 1
mov ecx, dword [esp + 0xcc]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
lea ecx, [esp + 0xac]
mov edx, dword [esp + 0xb4]
mov dword [edx], eax
mov eax, dword [0x4902dc]
and eax, 0x9dc92a91
mov dword [0x4902dc], eax
mov eax, dword [esp + 0xe0]
mov edx, dword [esp + 0xcc]
mov eax, dword [edx + eax*4]
mov edx, dword [esp + 0xb4]
mov dword [edx + 4], eax
mov eax, dword [0x49305c]
add eax, 0xe1323f7c
mov dword [0x49305c], eax
mov eax, dword [esp + 0xe8]
sub eax, dword [esp + 0xe0]
sub eax, 1
mov edx, dword [esp + 0xc0]
mov eax, dword [edx + eax*4]
mov dword [esp], ecx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.0043e830
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x404677
jmp 0x404eff
lea eax, [esp + 0xa0]
xor ecx, ecx
mov dword [0x48c944], 0x12b46c08
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x3c], ecx
call fcn.00443ab0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x4046b3
jmp 0x404eff
mov ax, word [0x49d05c]
mov cx, ax
or ecx, 0x3ef3
mov ax, cx
mov word [0x49d05c], ax
cmp dword [esp + 0xe8], 2
jge 0x4046e4
xor eax, eax
mov dword [esp + 0x38], eax
jmp 0x4046fc
mov eax, dword [esp + 0xe8]
sub eax, 2
mov ecx, dword [esp + 0xd8]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x38]
mov ecx, 0xe08bfcb
mov edx, dword [esp + 0xa8]
mov dword [edx], eax
mov eax, dword [0x48dd90]
and eax, 0x9d0d8039
cmp ecx, eax
jl 0x404743
mov ax, word [0x499f9c]
movsx ecx, ax
and ecx, 0x500a03c7
xor ecx, 0xdfe22776
mov edx, dword [0x48dcd0]
sub edx, ecx
mov dword [0x48dcd0], edx
cmp dword [esp + 0xe8], 1
jge 0x40475c
xor eax, eax
mov dword [esp + 0x34], eax
jmp 0x404774
mov eax, dword [esp + 0xe8]
sub eax, 1
mov ecx, dword [esp + 0xd8]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0xa8]
mov dword [ecx + 4], eax
mov eax, dword [0x48c634]
and eax, 0x2a826ccc
mov dword [0x48c634], eax
mov eax, dword [esp + 0xe8]
mov ecx, dword [esp + 0xd8]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0xa8]
mov dword [ecx + 8], eax
mov eax, dword [0x48f260]
or eax, 0x558e53cb
mov dword [0x48f260], eax
lea eax, [esp + 0xac]
lea ecx, [esp + 0xa0]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0041b240
cmp eax, 0
jg 0x404512
lea eax, [esp + 0xac]
lea ecx, [esp + 0xc4]
mov edx, dword [0x493f0c]
add edx, 0x53483a61
mov dword [0x493f0c], edx
mov edx, dword [esp + 0xe8]
sub edx, dword [esp + 0xe0]
sub edx, 1
mov esi, dword [esp + 0xc0]
mov edx, dword [esi + edx*4]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
call fcn.0043e830
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x40483e
jmp 0x404eff
mov ax, word [0x49ad90]
movsx ecx, ax
add ecx, 0x44d9c91f
or ecx, 0xa490d00c
cmp ecx, 0xcd024c40
jge 0x4048ac
mov eax, 0x621d4bb
mov ecx, dword [0x48fcb8]
sub ecx, 0x34d053f9
cmp eax, ecx
jne 0x4048a7
mov eax, 0xd56d7fd7
mov ecx, dword [0x49547c]
dec ecx
mov dword [0x49547c], ecx
or ecx, 0x5e305920
cmp eax, ecx
je 0x40489d
jmp 0x4048a2
jmp 0x4048a2
jmp 0x4048a7
jmp 0x4048ac
lea eax, [esp + 0xac]
mov ecx, dword [esp + 0xe8]
sub ecx, dword [esp + 0xe0]
sub ecx, 1
shl ecx, 5
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00445d30
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x4048e8
jmp 0x404eff
lea eax, [esp + 0xd0]
lea ecx, [esp + 0xac]
mov dword [0x48c6b8], 0x7f4bae83
mov dword [esp], eax
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.0043cce0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x404925
jmp 0x404eff
mov ax, word [0x49c648]
movsx ecx, ax
shl ecx, 5
mov edx, dword [0x48afac]
imul edx, edx, 0x566462a3
cmp ecx, edx
jge 0x404959
mov eax, dword [0x492f24]
add eax, 0xd5e4bb72
mov dword [0x492f24], eax
jmp 0x4049ab
mov eax, 0x25e28da1
mov ecx, dword [0x48caa8]
xor ecx, 0xffffffff
cmp eax, ecx
jne 0x404997
mov eax, 0x3449a53d
mov ecx, dword [0x48e668]
imul ecx, ecx, 0xff40cc7b
cmp eax, ecx
jge 0x40498d
jmp 0x404992
jmp 0x404992
jmp 0x4049a6
mov eax, dword [0x48fce8]
add eax, 0xa080ef1a
mov dword [0x48fce8], eax
jmp 0x4049ab
lea eax, [esp + 0xd0]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x30], ecx
call fcn.00440a00
cmp eax, 0
jge 0x404b65
lea eax, [esp + 0xac]
lea ecx, [esp + 0xc4]
mov edx, dword [0x48e4dc]
and edx, 0x541c8a62
mov esi, dword [0x48ade4]
imul esi, edx
mov dword [0x48ade4], esi
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0042d0c0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x404a1b
jmp 0x404eff
mov eax, 0xff6e939f
mov ecx, dword [0x491340]
sar ecx, 7
or ecx, 0x28d12bec
cmp eax, ecx
jg 0x404a9d
mov eax, 0x8a3e82b2
mov ecx, dword [0x48d5fc]
sar ecx, 3
sub ecx, 0x7f6d1ca6
add ecx, 0xd72bfbe7
cmp eax, ecx
jge 0x404a7a
mov eax, 0xd615a312
mov cx, word [0x49cb26]
movsx edx, cx
cmp eax, edx
jg 0x404a75
jmp 0x404a75
jmp 0x404a98
mov eax, dword [0x48f76c]
imul eax, eax, 0xfcbcd2d
add eax, 0xe10ff124
mov ecx, dword [0x48cd60]
sub ecx, eax
mov dword [0x48cd60], ecx
jmp 0x404a9d
lea eax, [esp + 0xac]
mov ecx, dword [esp + 0xe8]
sub ecx, dword [esp + 0xe0]
sub ecx, 1
shl ecx, 5
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00445d30
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x404ad9
jmp 0x404eff
lea eax, [esp + 0xd0]
lea ecx, [esp + 0xac]
mov dx, word [0x49c872]
mov si, dx
add esi, 0xd4353a20
mov dx, si
mov word [0x49c872], dx
mov dword [esp], eax
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.00430160
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x404b26
jmp 0x404eff
mov eax, dword [0x48f814]
and eax, 0x5e7d1940
mov dword [0x48f814], eax
mov eax, dword [esp + 0xe8]
mov ecx, dword [esp + 0xe0]
sub eax, ecx
mov ecx, dword [esp + 0xc0]
mov edx, dword [ecx + eax*4 - 4]
dec edx
mov dword [ecx + eax*4 - 4], edx
mov eax, dword [0x48bbfc]
imul eax, eax, 0x90a16de4
mov dword [0x48bbfc], eax
mov eax, dword [0x491bc4]
imul eax, eax, 0x85791f81
mov dword [0x491bc4], eax
mov eax, dword [esp + 0xe8]
add eax, 0xffffffff
mov dword [esp + 0xe8], eax
jmp 0x403bf5
mov eax, dword [0x493f84]
imul eax, eax, 0xa8855b01
cmp eax, 0x2333c103
je 0x404bbc
mov eax, dword [0x48e9f8]
sar eax, 4
xor eax, 0x21b41fac
mov ecx, dword [0x4921d4]
add ecx, eax
mov dword [0x4921d4], ecx
cmp dword [esp + 0xf0], 0
je 0x404c84
mov ax, word [0x49cefe]
mov cx, ax
inc ecx
mov dx, cx
mov word [0x49cefe], dx
movsx ecx, ax
and ecx, 0xe4c6e06e
mov esi, dword [0x48fbdc]
xor esi, ecx
mov dword [0x48fbdc], esi
mov ecx, dword [esp + 0xf0]
mov esi, esp
lea edi, [esp + 0xb8]
mov dword [esi + 4], edi
mov dword [esi], ecx
call fcn.0042d0c0
mov ecx, dword [0x48ed18]
imul ecx, ecx, 0x80299448
and ecx, 0x649f1630
mov esi, dword [0x48ddc8]
and esi, 0xfa504196
cmp ecx, esi
mov dword [esp + 0x2c], eax
je 0x404c57
mov eax, dword [0x48cfbc]
imul eax, eax, 0x70382b5d
or eax, 0xf1023e04
mov ecx, dword [0x493230]
and ecx, eax
mov dword [0x493230], ecx
mov eax, dword [esp + 0xf8]
mov eax, dword [eax]
mov ecx, dword [esp + 0xfc]
mov ecx, dword [ecx]
imul eax, ecx
mov ecx, dword [esp + 0xf0]
mov dword [ecx], eax
mov eax, dword [0x48cf50]
or eax, 0x5a10cd50
mov dword [0x48cf50], eax
mov eax, 0xe83af77f
mov ecx, dword [0x495e50]
sar ecx, 2
xor ecx, 0x9c677979
cmp eax, ecx
je 0x404cc1
mov eax, dword [0x48f370]
dec eax
mov dword [0x48f370], eax
mov cx, word [0x49779c]
mov dx, cx
xor edx, eax
mov cx, dx
mov word [0x49779c], cx
cmp dword [esp + 0xf4], 0
je 0x404e75
mov eax, 0x5aea2b9
mov cx, word [0x497a22]
mov dx, cx
add edx, 0xbb57dfc5
mov cx, dx
mov word [0x497a22], cx
mov edx, dword [esp + 0xdc]
mov esi, esp
mov dword [esi + 4], edx
lea edx, [esp + 0xd0]
mov dword [esi], edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], edx
call fcn.00417f30
mov cx, word [0x49852a]
mov dx, cx
inc edx
mov cx, dx
mov word [0x49852a], cx
movsx edx, cx
imul edx, edx, 0x6e4df980
mov esi, dword [0x493e9c]
sub esi, edx
mov dword [0x493e9c], esi
mov edx, dword [esp + 0xf4]
mov esi, esp
mov edi, dword [esp + 0x24]
mov dword [esi + 4], edi
mov dword [esi], edx
mov dword [esp + 0x20], eax
call fcn.0042d0c0
mov edx, dword [0x494100]
mov esi, edx
dec esi
mov dword [0x494100], esi
mov esi, dword [0x4916a4]
mov edi, esi
dec edi
mov dword [0x4916a4], edi
imul edx, esi
xor edx, 0x9372dadf
mov esi, dword [esp + 0x28]
cmp esi, edx
mov dword [esp + 0x1c], eax
jne 0x404db3
mov eax, dword [0x4940a8]
xor eax, 0x5b2f
mov cx, word [0x499876]
mov dx, cx
and edx, eax
mov cx, dx
mov word [0x499876], cx
jmp 0x404dcb
mov ax, word [0x49897c]
mov cx, ax
and ecx, 0x1067
mov ax, cx
mov word [0x49897c], ax
mov eax, dword [esp + 0xf8]
mov eax, dword [eax]
mov ecx, dword [esp + 0xf4]
mov dword [ecx], eax
mov eax, dword [0x492508]
sar eax, 9
xor eax, 0x30d5ef18
xor eax, 0x529a4eed
cmp eax, 0x4a1ce5c8
jne 0x404e1e
mov ax, word [0x49a2e6]
movsx ecx, ax
and ecx, 0x6cdc2a80
xor ecx, 0xd0332205
mov edx, dword [0x48e754]
imul edx, ecx
mov dword [0x48e754], edx
xor eax, eax
mov ecx, dword [esp + 0xf4]
mov dword [esp], ecx
mov dword [esp + 4], 0
mov dword [esp + 0x18], eax
call fcn.00440a00
cmp eax, 0
jne 0x404e51
mov eax, dword [esp + 0xf4]
mov dword [eax], 1
mov eax, dword [0x496094]
imul eax, eax, 0x3020e29a
mov ecx, dword [0x49555c]
shl ecx, 5
add eax, ecx
mov ecx, dword [0x48ffdc]
add ecx, eax
mov dword [0x48ffdc], ecx
mov eax, dword [0x49002c]
mov ecx, dword [0x48ce0c]
imul eax, ecx
sub eax, 0x3fbffefd
cmp eax, 0x5fcdf3e0
jne 0x404ea7
mov eax, dword [0x496bc0]
add eax, 0x44870ac3
mov dword [0x496bc0], eax
jmp 0x404efa
mov eax, 0xb8feffff
mov ecx, dword [0x493eb8]
and ecx, 0x630bb613
cmp eax, ecx
jl 0x404edd
mov eax, 0x35f257b7
mov ecx, dword [0x48bf30]
cmp eax, ecx
jl 0x404ed8
jmp 0x404ed8
jmp 0x404ef5
mov eax, dword [0x4942f8]
and eax, 0x24040f48
mov ecx, dword [0x493468]
or ecx, eax
mov dword [0x493468], ecx
jmp 0x404efa
jmp 0x404eff
mov eax, esp
lea ecx, [esp + 0xa0]
mov dword [eax + 0x10], ecx
lea ecx, [esp + 0xac]
mov dword [eax + 0xc], ecx
lea ecx, [esp + 0xb8]
mov dword [eax + 8], ecx
lea ecx, [esp + 0xc4]
mov dword [eax + 4], ecx
lea ecx, [esp + 0xd0]
mov dword [eax], ecx
mov dword [eax + 0x14], 0
call fcn.00406f70
mov eax, dword [0x496a20]
shl eax, 7
mov ecx, 0xbd7cab89
sub ecx, eax
mov dx, word [0x49b17c]
mov ax, dx
not eax
or ecx, eax
mov dx, word [0x49b4fe]
mov ax, dx
xor eax, ecx
mov dx, ax
mov word [0x49b4fe], dx
mov eax, dword [esp + 0xec]
mov dword [esp + 0x100], eax
mov eax, dword [esp + 0x100]
add esp, 0x104
pop esi
pop edi
ret