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

Disassembly:
push ebx
push edi
push esi
sub esp, 0x104
mov eax, dword [esp + 0x120]
mov ecx, dword [esp + 0x11c]
mov edx, dword [esp + 0x118]
mov esi, dword [esp + 0x114]
mov dword [esp + 0xfc], eax
mov dword [esp + 0xf8], ecx
mov dword [esp + 0xf4], edx
mov dword [esp + 0xf0], esi
mov eax, dword [0x4884e8]
imul eax, eax, 0x1986efad
mov dword [0x4884e8], eax
mov eax, dword [0x48b974]
imul eax, eax, 0x8d0ae350
mov dword [0x48b974], eax
mov di, word [0x48382e]
mov ax, di
inc eax
mov bx, ax
mov word [0x48382e], bx
movsx eax, di
xor eax, 0x44f53bf
mov ecx, dword [0x48aef4]
cmp eax, ecx
jne 0x404b68
mov ax, word [0x480474]
mov cx, ax
inc ecx
mov dx, cx
mov word [0x480474], dx
movsx ecx, ax
or ecx, 0xdd585b53
mov esi, dword [0x488de4]
imul esi, ecx
mov dword [0x488de4], esi
xor eax, eax
mov ecx, dword [esp + 0xfc]
mov dword [esp], ecx
mov dword [esp + 4], 0
mov dword [esp + 0x7c], eax
call fcn.0041f7a0
cmp eax, 0
jne 0x404b9e
mov dword [esp + 0x100], 0xfffffff4
jmp 0x406411
mov eax, dword [0x486408]
add eax, 0x1f008272
mov dword [0x486408], eax
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.0042f500
mov eax, dword [0x48d244]
and eax, 0x1a0640a2
mov ecx, dword [0x4894c8]
or ecx, eax
mov dword [0x4894c8], ecx
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0xf8]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00433d00
cmp eax, 0
jge 0x404cf4
mov eax, dword [0x48dd84]
and eax, 0xa8853e7a
mov ecx, dword [0x489864]
sub ecx, eax
mov dword [0x489864], ecx
cmp dword [esp + 0xf0], 0
je 0x404c84
xor eax, eax
mov ecx, dword [esp + 0xf0]
mov dword [esp], ecx
mov dword [esp + 4], 0
mov dword [esp + 0x78], eax
call fcn.0041d4d0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x404c7f
jmp 0x40637c
jmp 0x404c84
mov eax, dword [0x48b2f8]
add eax, 0xe2fa0e35
mov dword [0x48b2f8], eax
cmp dword [esp + 0xf4], 0
je 0x404cd5
mov eax, dword [esp + 0xf8]
mov ecx, dword [esp + 0xf4]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00407540
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x404cd0
jmp 0x40637c
jmp 0x404cd5
mov eax, dword [0x48d618]
xor eax, 0x5f3d6b97
mov dword [0x48d618], eax
mov dword [esp + 0x100], 0
jmp 0x406411
mov eax, dword [0x48809c]
add eax, 0x38bce5f6
and eax, 0xb18e55da
cmp eax, 0xf36c6475
jge 0x404d1e
mov eax, dword [0x48dc98]
imul eax, eax, 0xcddd91a9
mov dword [0x48dc98], eax
lea eax, [esp + 0xd0]
mov ecx, dword [esp + 0xf8]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00407540
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x404d4d
jmp 0x40637c
mov eax, 0x64cfb628
mov cx, word [0x4806bc]
movsx edx, cx
sar edx, 7
mov cx, word [0x480868]
movsx esi, cx
sar esi, 8
sub edx, esi
cmp eax, edx
je 0x404d85
mov eax, dword [0x48b970]
xor eax, 0xb7ffffef
mov dword [0x48b970], eax
lea eax, [esp + 0xc4]
mov ecx, dword [esp + 0xfc]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00407540
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x404db4
jmp 0x40637c
lea eax, [esp + 0xb8]
mov cx, word [0x4820d4]
mov dx, cx
and edx, 0x83aa
mov cx, dx
mov word [0x4820d4], cx
mov dword [esp + 0xc4], 1
mov dword [esp + 0xd0], 1
mov edx, dword [0x486294]
shl edx, 7
and edx, 0x65ea5f80
mov esi, dword [0x486578]
xor edx, esi
xor edx, 0x8450ad94
mov dword [0x486578], edx
mov edx, dword [esp + 0xf8]
mov edx, dword [edx + 4]
add edx, 2
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0042abb0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x404e3c
jmp 0x40637c
lea eax, [esp + 0xb8]
xor ecx, ecx
mov edx, dword [0x48d9a0]
mov esi, dword [0x48cc30]
or edx, esi
mov esi, dword [0x48b4d4]
or esi, edx
mov dword [0x48b4d4], esi
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x74], ecx
call fcn.0041d4d0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x404e8a
jmp 0x40637c
lea eax, [esp + 0xac]
mov ecx, 2
mov edx, dword [0x4895e4]
add edx, 0x86c7f991
mov dword [0x4895e4], edx
mov dword [esp], eax
mov dword [esp + 4], 2
mov dword [esp + 0x70], ecx
call fcn.0042abb0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x404ed1
jmp 0x40637c
lea eax, [esp + 0xa0]
mov ecx, 3
mov edx, dword [0x48b5c8]
mov dword [0x484f2c], edx
mov dword [esp], eax
mov dword [esp + 4], 3
mov dword [esp + 0x6c], ecx
call fcn.0042abb0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x404f12
jmp 0x40637c
mov eax, 0x8040a240
mov dword [0x4863f8], 0xa766ca8d
mov ecx, esp
lea edx, [esp + 0xc4]
mov dword [ecx], edx
mov dword [esp + 0x68], eax
call fcn.00433a90
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 si, word [0x4800cc]
movsx eax, si
xor eax, 0x624f755a
xor eax, 0xa904bc7d
mov ecx, dword [esp + 0x68]
cmp ecx, eax
je 0x404f8a
mov eax, dword [0x48e624]
mov ecx, eax
inc ecx
mov dword [0x48e624], ecx
add eax, 0xd2c2fbd6
mov dx, ax
mov word [0x4827a0], dx
cmp dword [esp + 0xdc], 0x1f
jge 0x405075
lea eax, [esp + 0xd0]
mov ecx, dword [0x48bce8]
and ecx, 0xfcccff69
mov dword [0x48bce8], ecx
mov ecx, dword [esp + 0xdc]
mov edx, 0x1f
sub edx, ecx
mov dword [esp + 0xdc], edx
mov ecx, dword [0x48d2ec]
mov si, word [0x484368]
mov dx, si
or edx, ecx
mov si, dx
mov word [0x484368], si
mov ecx, dword [esp + 0xdc]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00425d40
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x40500a
jmp 0x40637c
lea eax, [esp + 0xc4]
mov ecx, dword [0x485f6c]
imul ecx, ecx, 0xaed2a54e
add ecx, 0xbfbc063c
mov dx, word [0x482114]
mov si, dx
or esi, ecx
mov dx, si
mov word [0x482114], dx
mov ecx, dword [esp + 0xdc]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00425d40
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x405061
jmp 0x40637c
mov eax, dword [0x48706c]
or eax, 0xde4c6691
mov dword [0x48706c], eax
jmp 0x405080
mov dword [esp + 0xdc], 0
mov eax, dword [0x484be0]
xor eax, 0x66317315
mov dword [0x484be0], eax
mov eax, dword [esp + 0xd4]
dec eax
mov dword [esp + 0xe4], eax
mov eax, dword [0x48da64]
add eax, 0xfc040ca7
mov dword [0x48da64], eax
mov eax, dword [esp + 0xc8]
dec eax
mov dword [esp + 0xe0], eax
mov cx, word [0x480764]
mov ax, cx
or eax, 0x3916
mov cx, ax
mov word [0x480764], cx
mov eax, dword [esp + 0xe4]
mov edx, dword [esp + 0xe0]
sub eax, edx
shl eax, 5
mov edx, esp
mov dword [edx + 4], eax
lea eax, [esp + 0xc4]
mov dword [edx], eax
call fcn.00425d40
mov edx, dword [0x484bc4]
shl edx, 2
or edx, 0x523a6516
cmp edx, 0x14e260a7
mov dword [esp + 0x64], eax
jle 0x40512e
mov eax, dword [0x48c7fc]
add eax, 0x8800221
mov dword [0x48c7fc], eax
jmp 0x405150
mov eax, dword [0x48ceac]
mov ecx, eax
dec ecx
mov dword [0x48ceac], ecx
imul eax, eax, 0xcae4826b
mov ecx, dword [0x48582c]
add ecx, eax
mov dword [0x48582c], ecx
jmp 0x405155
lea eax, [esp + 0xd0]
lea ecx, [esp + 0xc4]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00439a20
cmp eax, 0
jl 0x405229
mov eax, 0x7dc1e2b3
mov ecx, dword [0x48572c]
sar ecx, 4
mov dword [0x48e088], ecx
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 ecx, dword [0x48bac4]
and ecx, 0x9d808959
mov dword [0x48bac4], ecx
mov ecx, esp
lea edx, [esp + 0xc4]
mov dword [ecx + 8], edx
lea edx, [esp + 0xd0]
mov dword [ecx + 4], edx
mov dword [ecx], edx
mov dword [esp + 0x60], eax
call fcn.0044d3f0
mov ecx, dword [0x4898cc]
inc ecx
mov dword [0x4898cc], ecx
mov edx, dword [esp + 0x60]
cmp edx, ecx
mov dword [esp + 0x5c], eax
jle 0x40520e
mov eax, dword [0x489fd8]
xor eax, 0xf49dce1e
mov dword [0x489fd8], eax
jmp 0x405224
mov eax, dword [0x488134]
dec eax
mov dword [0x488134], eax
imul eax, eax, 0xadecd69e
mov dword [0x486e58], eax
jmp 0x405155
mov eax, dword [0x4886a8]
add eax, 0x90004906
mov dword [0x4886a8], eax
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.0043c450
mov ecx, dword [0x4864fc]
dec ecx
mov dword [0x4864fc], ecx
and ecx, 0xb589ccc
mov edx, dword [0x485ae0]
or edx, ecx
mov dword [0x485ae0], edx
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0xe8], ecx
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0xe8]
cmp eax, dword [esp + 0xe0]
jle 0x406147
mov eax, dword [0x485f10]
dec eax
mov dword [0x485f10], eax
xor eax, 0x257df8d0
mov ecx, dword [0x486a7c]
add ecx, eax
mov dword [0x486a7c], ecx
mov eax, dword [esp + 0xe8]
mov ecx, dword [esp + 0xd8]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0xe0]
mov edx, dword [esp + 0xcc]
cmp eax, dword [edx + ecx*4]
jb 0x40530f
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 0x405a3b
mov eax, dword [0x488724]
xor eax, 0x6ef864a6
mov dword [0x486c50], eax
mov cx, word [0x47fe7a]
mov ax, cx
or eax, 0x16aa
mov cx, ax
mov word [0x47fe7a], cx
mov cx, word [0x47fd62]
mov ax, cx
dec eax
mov cx, ax
mov word [0x47fd62], cx
movsx eax, cx
add eax, 0x6c8450d1
and eax, 0x3608a2cc
cmp eax, 0x93d8d05c
je 0x4053a2
mov eax, 0x5c74fedd
mov ecx, dword [0x48d720]
shl ecx, 0xa
add ecx, 0x1c31c77d
mov edx, dword [0x48d1f0]
or ecx, edx
cmp eax, ecx
je 0x40539d
mov ax, word [0x47f984]
movsx ecx, ax
or ecx, 0x8ba050e9
mov dword [0x48db28], ecx
jmp 0x4053a2
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0xcc]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x84], eax
mov eax, dword [0x48cad0]
xor eax, 0xb7b45776
mov dword [0x48cad0], eax
movzx eax, word [esp + 0x84]
mov dword [esp + 0x8c], eax
mov eax, dword [0x48ac54]
imul eax, eax, 0x53201d38
and eax, 0x3ce69ca8
mov dword [0x487c48], eax
movzx eax, word [esp + 0x86]
mov dword [esp + 0x88], eax
mov eax, dword [0x486030]
add eax, 0xc75ea72c
xor eax, 0xa48594b8
mov dx, word [0x4842e6]
mov cx, dx
dec ecx
mov si, cx
mov word [0x4842e6], si
movsx ecx, dx
cmp eax, ecx
jne 0x405460
mov eax, 0xfbbfaffd
mov ecx, dword [0x48b708]
dec ecx
mov dword [0x48b708], ecx
imul ecx, ecx, 0xd080380d
cmp eax, ecx
jle 0x40545b
mov eax, dword [0x48ba44]
imul eax, eax, 0x8fffb74e
mov dword [0x48ba44], eax
jmp 0x40546a
mov dword [0x48a7a8], 0x4bf23814
mov eax, dword [esp + 0xe8]
mov ecx, dword [esp + 0xd8]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0x88]
xor edx, edx
div ecx
mov dword [esp + 0x98], eax
mov eax, dword [0x4884dc]
shl eax, 0xa
or eax, 0x33bc8ae8
mov ecx, dword [0x487c60]
and ecx, eax
mov dword [0x487c60], ecx
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 [0x48ba50]
mov ecx, dword [0x48bb14]
imul eax, ecx
shl eax, 0xa
mov dword [0x48bb14], eax
mov eax, dword [esp + 0x90]
shl eax, 0x10
mov dword [esp + 0x90], eax
mov si, word [0x480260]
mov ax, si
mov si, word [0x482068]
mov cx, si
imul eax, ecx
add eax, 0xbdc9c5ea
mov si, word [0x484a7c]
mov cx, si
sub ecx, eax
mov si, cx
mov word [0x484a7c], si
mov eax, dword [esp + 0xe8]
mov ecx, dword [esp + 0xd8]
movzx eax, word [ecx + eax*4 - 2]
mov ecx, dword [esp + 0x90]
or ecx, eax
mov dword [esp + 0x90], ecx
mov eax, dword [0x48d790]
add eax, 0x197f6a8f
mov dword [0x48d790], eax
mov eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x8c]
imul eax, ecx
mov dword [esp + 0x80], eax
mov eax, dword [0x48da40]
mov ecx, eax
inc ecx
mov dword [0x48da40], ecx
mov ecx, dword [0x487048]
lea eax, [ecx + eax + 1]
mov dword [0x487048], eax
mov eax, dword [esp + 0x90]
cmp eax, dword [esp + 0x80]
jae 0x4056ec
mov eax, 0xe26e0e3c
mov ecx, dword [0x48a24c]
mov edx, ecx
dec edx
mov dword [0x48a24c], edx
and ecx, 0xe89b2d55
mov si, word [0x4838d0]
movsx edx, si
shl edx, 6
or ecx, edx
mov edx, dword [0x48a538]
or edx, ecx
mov dword [0x48a538], edx
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 [0x489320]
shl ecx, 6
mov edx, dword [0x487cb0]
mov si, word [0x480a10]
movsx edi, si
imul edx, edi
xor ecx, edx
cmp eax, ecx
jg 0x405639
mov eax, dword [0x48d380]
add eax, 0x87d01ea
mov dword [0x48d380], eax
jmp 0x40563e
xor eax, eax
mov cl, al
mov eax, dword [esp + 0x90]
cmp eax, dword [esp + 0x84]
mov byte [esp + 0x57], cl
jb 0x40566f
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 0x405680
jmp 0x4056ab
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 0x40563e
mov eax, dword [0x48d530]
sar eax, 5
xor eax, 0xf0766dda
mov cx, word [0x4803da]
movsx edx, cx
add edx, 0x627e6e75
mov esi, dword [0x48ad50]
or edx, esi
cmp eax, edx
jg 0x4056e7
mov eax, dword [0x48c5b4]
and eax, 0x358e9fb1
mov dword [0x48c5b4], eax
jmp 0x4056ec
mov eax, 0x6a68d3b9
mov ecx, dword [0x48bdc4]
mov edx, dword [0x486ba8]
and edx, ecx
mov dword [0x486ba8], edx
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x90]
sub edx, ecx
mov dword [esp + 0x90], edx
mov ecx, dword [0x489420]
shl ecx, 6
mov edx, 0x91f866ea
sub edx, ecx
mov si, word [0x480d0c]
mov cx, si
imul ecx, edx
mov si, cx
mov word [0x480d0c], si
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x88]
xor edi, edi
mov dword [esp + 0x50], eax
mov eax, ecx
mov dword [esp + 0x4c], edx
mov edx, edi
mov ecx, dword [esp + 0x4c]
div ecx
mov dword [esp + 0x9c], eax
mov si, word [0x482a20]
mov ax, si
add eax, 0xef377b4b
mov si, ax
mov word [0x482a20], si
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 eax, dword [0x48dccc]
mov ecx, eax
inc ecx
mov dword [0x48dccc], ecx
mov ecx, dword [esp + 0x50]
cmp ecx, eax
je 0x4057d0
mov eax, dword [0x484eac]
imul eax, eax, 0xff9bff7f
mov dword [0x484eac], eax
mov eax, 0x49bfb93b
mov ecx, dword [esp + 0x94]
shl ecx, 0x10
mov dword [esp + 0x94], ecx
mov dx, word [0x4811ee]
movsx ecx, dx
xor ecx, 0xffffffff
cmp eax, ecx
jne 0x40582e
mov eax, dword [0x48e9e4]
dec eax
mov dword [0x48e9e4], eax
mov ecx, dword [0x48c39c]
shl ecx, 8
mov edx, 0x167717be
sub edx, ecx
or eax, edx
mov si, word [0x47f9ca]
mov cx, si
or ecx, eax
mov si, cx
mov word [0x47f9ca], si
mov eax, 0x34b6dff5
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 [0x484868]
mov cx, si
xor ecx, 0x8d04
mov si, word [0x4841d8]
mov dx, si
sub edx, ecx
mov si, dx
mov word [0x4841d8], si
mov ecx, dword [esp + 0x9c]
mov edx, dword [esp + 0x8c]
imul ecx, edx
mov dword [esp + 0x80], ecx
mov ecx, dword [0x48e6f8]
xor ecx, 0xa146e368
cmp eax, ecx
jg 0x4058c0
mov ax, word [0x480470]
mov cx, ax
and ecx, 0x211
mov ax, cx
mov word [0x480470], ax
mov eax, dword [esp + 0x94]
cmp eax, dword [esp + 0x80]
jae 0x4059a1
mov eax, dword [0x488768]
or eax, 0xe32e5cda
mov dword [0x488768], eax
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 [0x48c638]
add eax, 0xbb53268d
mov ecx, dword [0x48641c]
and eax, ecx
and eax, 0xa9ce9670
mov dword [0x48641c], eax
xor eax, eax
mov cl, al
mov eax, dword [esp + 0x94]
cmp eax, dword [esp + 0x84]
mov byte [esp + 0x4b], cl
jb 0x405956
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 0x405967
jmp 0x405992
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 0x405925
mov eax, dword [0x4897e4]
or eax, 0xa6663f83
mov dword [0x4897e4], eax
mov eax, dword [0x486680]
imul eax, eax, 0x893154e9
mov dword [0x486680], eax
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x94]
sub ecx, eax
mov dword [esp + 0x94], ecx
mov dx, word [0x480580]
mov ax, dx
dec eax
mov si, ax
mov word [0x480580], si
movsx eax, dx
xor eax, 0x38bc65ef
mov dword [0x4861b0], eax
mov eax, dword [esp + 0x98]
shl eax, 0x10
mov ecx, dword [esp + 0x9c]
or eax, ecx
mov ecx, dword [esp + 0xe8]
mov edi, dword [esp + 0xe0]
sub ecx, edi
mov edi, dword [esp + 0xc0]
mov dword [edi + ecx*4 - 4], eax
mov eax, dword [0x484f04]
inc eax
mov dword [0x484f04], eax
and eax, 0x2091504
or eax, 0xf92080d8
mov ecx, dword [0x4885a0]
xor ecx, eax
mov dword [0x4885a0], ecx
mov eax, dword [0x485e5c]
imul eax, eax, 0xf1a5a40a
mov dword [0x485e5c], 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 si, word [0x481c90]
mov ax, si
dec eax
mov si, ax
mov word [0x481c90], si
movsx eax, si
mov ecx, dword [0x48b2b4]
mov edx, ecx
inc edx
mov dword [0x48b2b4], edx
mov edx, dword [0x48a6c4]
add ecx, edx
xor eax, ecx
mov si, word [0x4811ec]
movsx ecx, si
shl ecx, 3
cmp eax, ecx
jne 0x405ac1
mov eax, dword [0x4856f8]
imul eax, eax, 0x49e71a29
mov dword [0x4856f8], eax
jmp 0x405ac6
mov eax, 0x8df98c28
mov word [0x47fb8a], 0x91d8
mov ecx, dword [esp + 0xe8]
mov edx, dword [esp + 0xe0]
sub ecx, edx
mov edx, dword [esp + 0xc0]
mov esi, dword [edx + ecx*4 - 4]
dec esi
mov dword [edx + ecx*4 - 4], esi
mov ecx, dword [0x48afc4]
mov edx, ecx
dec edx
mov dword [0x48afc4], edx
cmp eax, ecx
je 0x405b30
mov eax, dword [0x48c304]
mov ecx, dword [0x4853b8]
mov edx, ecx
dec edx
mov dword [0x4853b8], edx
or eax, ecx
mov ecx, dword [0x4897f8]
imul ecx, eax
mov dword [0x4897f8], ecx
lea eax, [esp + 0xac]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x44], ecx
call fcn.0041d4d0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x405b62
jmp 0x40637c
mov eax, dword [0x48ea9c]
add eax, 0xbfaafffb
mov dword [0x48ea9c], eax
cmp dword [esp + 0xe0], 1
jge 0x405b8a
xor eax, eax
mov dword [esp + 0x40], eax
jmp 0x405ba2
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 [0x48ea40]
and eax, 0x52281b00
mov dword [0x48ea40], 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 [0x4859a0]
dec eax
mov dword [0x4859a0], eax
imul eax, eax, 0xede45e27
mov edx, dword [0x489974]
xor eax, edx
xor eax, 0x11d2eb8e
mov dword [0x489974], 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.004236d0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x405c43
jmp 0x40637c
lea eax, [esp + 0xa0]
xor ecx, ecx
mov edx, dword [0x487984]
imul edx, edx, 0x8681305
mov dword [0x487984], edx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x3c], ecx
call fcn.0041d4d0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x405c87
jmp 0x40637c
mov eax, dword [0x48e204]
mov ecx, 0x13031b7b
sub ecx, eax
mov dx, cx
mov word [0x48222c], dx
cmp dword [esp + 0xe8], 2
jge 0x405cb6
xor eax, eax
mov dword [esp + 0x38], eax
jmp 0x405cce
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, dword [esp + 0xa8]
mov dword [ecx], eax
mov dx, word [0x483976]
mov ax, dx
or eax, 0x17a0
mov dx, ax
mov word [0x483976], dx
cmp dword [esp + 0xe8], 1
jge 0x405d0d
xor eax, eax
mov dword [esp + 0x34], eax
jmp 0x405d25
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, 0xc56fe8f3
mov edx, dword [esp + 0xa8]
mov dword [edx + 4], eax
mov eax, dword [0x489d64]
sar eax, 9
imul eax, eax, 0x31f6aa44
sub eax, 0xe23c034f
cmp ecx, eax
jge 0x405da0
mov eax, 0x6c7a913b
mov ecx, dword [0x485360]
xor ecx, 0xffffffff
add ecx, 0x621a6f1c
cmp eax, ecx
jg 0x405d9b
mov eax, dword [0x4890dc]
add eax, 0x80819d86
mov cx, word [0x481fea]
movsx edx, cx
and edx, 0xb837cc25
cmp eax, edx
jl 0x405d96
jmp 0x405d96
jmp 0x405d9b
jmp 0x405df9
mov eax, dword [0x48e050]
mov ecx, eax
inc ecx
mov dword [0x48e050], ecx
mov ecx, dword [0x486354]
mov edx, ecx
dec edx
mov dword [0x486354], edx
and eax, ecx
or eax, 0x1b6bbf4f
mov ecx, dword [0x4876d4]
inc ecx
mov dword [0x4876d4], ecx
and ecx, 0x776cb509
xor ecx, 0xa2f853d
cmp eax, ecx
jge 0x405df4
mov eax, dword [0x487fac]
add eax, 0xfa4e7c00
mov dword [0x487fac], eax
jmp 0x405df9
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 [0x484c04]
or eax, 0x9612f843
mov dword [0x484c04], eax
lea eax, [esp + 0xac]
lea ecx, [esp + 0xa0]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00439a20
cmp eax, 0
jg 0x405ac6
lea eax, [esp + 0xac]
lea ecx, [esp + 0xc4]
mov edx, dword [0x48c164]
mov esi, 0x34336eb8
sub esi, edx
mov di, word [0x484400]
mov dx, di
and edx, esi
mov di, dx
mov word [0x484400], di
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.004236d0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x405eb7
jmp 0x40637c
lea eax, [esp + 0xac]
mov dword [0x485c08], 0xf4dae9f8
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.00425d40
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x405efd
jmp 0x40637c
mov ax, word [0x484586]
movsx ecx, ax
sar ecx, 8
imul ecx, ecx, 0xd30c224c
add ecx, 0x8bafff9b
mov edx, dword [0x48e630]
add edx, 0x37b1f31c
cmp ecx, edx
jl 0x405f5a
mov eax, 0xc2c9c269
mov cx, word [0x4821e8]
movsx edx, cx
add edx, 0xc44953fb
cmp eax, edx
jle 0x405f55
mov eax, dword [0x48593c]
add eax, 0x74e9a53
mov dword [0x48593c], eax
jmp 0x405f5a
lea eax, [esp + 0xd0]
lea ecx, [esp + 0xac]
mov dword [esp], eax
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.0044d3f0
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x405f8d
jmp 0x40637c
lea eax, [esp + 0xd0]
xor ecx, ecx
mov dword [0x48d19c], 0xdcb5a94c
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x30], ecx
call fcn.0041f7a0
cmp eax, 0
jge 0x4060fd
lea eax, [esp + 0xac]
lea ecx, [esp + 0xc4]
mov dx, word [0x48304e]
mov si, dx
or esi, 0x8167
mov dx, si
mov word [0x48304e], dx
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00407540
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x406006
jmp 0x40637c
lea eax, [esp + 0xac]
mov cx, word [0x4837a0]
mov dx, cx
and edx, 0x6c93
mov cx, dx
mov word [0x4837a0], cx
mov edx, dword [esp + 0xe8]
sub edx, dword [esp + 0xe0]
sub edx, 1
shl edx, 5
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.00425d40
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x40605c
jmp 0x40637c
lea eax, [esp + 0xd0]
lea ecx, [esp + 0xac]
mov edx, dword [0x485294]
mov dword [0x48dee4], edx
mov dword [esp], eax
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.0041f000
mov dword [esp + 0xec], eax
cmp eax, 0
je 0x40609b
jmp 0x40637c
mov eax, dword [0x48d588]
mov cx, word [0x481dc0]
movsx edx, cx
imul edx, eax
add edx, edx
and edx, 0x4e3aa3b4
mov eax, dword [0x4883b8]
or eax, edx
mov dword [0x4883b8], eax
mov eax, dword [esp + 0xe8]
mov edx, dword [esp + 0xe0]
sub eax, edx
mov edx, dword [esp + 0xc0]
mov esi, dword [edx + eax*4 - 4]
dec esi
mov dword [edx + eax*4 - 4], esi
mov eax, dword [0x48c38c]
mov edx, eax
dec edx
mov dword [0x48c38c], edx
mov edx, dword [0x48a498]
sub edx, eax
mov dword [0x48a498], edx
mov ax, word [0x48484c]
mov cx, ax
mov edx, ecx
inc edx
mov ax, dx
mov word [0x48484c], ax
mov edx, dword [0x48a0ac]
mov esi, edx
dec esi
mov dword [0x48a0ac], esi
lea ecx, [ecx + edx - 0x733cd826]
mov ax, cx
mov word [0x481d50], ax
mov eax, dword [esp + 0xe8]
add eax, 0xffffffff
mov dword [esp + 0xe8], eax
jmp 0x405291
mov dword [0x489ff8], 0xd0f2d52b
cmp dword [esp + 0xf0], 0
je 0x4061e0
mov eax, dword [0x48c6a8]
xor eax, 0xe4e0654f
mov ecx, dword [0x48c92c]
imul ecx, eax
mov dword [0x48c92c], ecx
mov eax, dword [esp + 0xf0]
mov ecx, esp
lea edx, [esp + 0xb8]
mov dword [ecx + 4], edx
mov dword [ecx], eax
call fcn.00407540
mov si, word [0x480c1a]
mov cx, si
or ecx, 0x79c7
mov si, cx
mov word [0x480c1a], si
mov ecx, dword [esp + 0xf8]
mov ecx, dword [ecx]
mov edx, dword [esp + 0xfc]
mov edx, dword [edx]
imul ecx, edx
mov edx, dword [esp + 0xf0]
mov dword [edx], ecx
mov ecx, dword [0x48a87c]
and ecx, 0x8450a282
mov dword [0x48a87c], ecx
mov dword [esp + 0x2c], eax
mov eax, dword [0x489508]
and eax, 0x324a98d1
mov dword [0x489508], eax
cmp dword [esp + 0xf4], 0
je 0x406324
xor eax, eax
mov ecx, dword [0x4868d0]
imul ecx, ecx, 0x273c09e3
mov dword [0x4868d0], ecx
mov ecx, dword [esp + 0xdc]
mov edx, esp
mov dword [edx + 4], ecx
lea ecx, [esp + 0xd0]
mov dword [edx], ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], ecx
call fcn.0043c450
mov si, word [0x48003e]
movsx ecx, si
or ecx, 0x48251a9a
mov edx, dword [0x48a6fc]
sub edx, ecx
mov dword [0x48a6fc], edx
mov ecx, dword [esp + 0xf4]
mov edx, esp
mov edi, dword [esp + 0x24]
mov dword [edx + 4], edi
mov dword [edx], ecx
mov dword [esp + 0x20], eax
call fcn.00407540
mov ecx, dword [0x4869ac]
shl ecx, 8
mov edx, 0x69bdf27d
sub edx, ecx
and edx, 0xc101ec81
mov ecx, dword [0x489338]
imul ecx, edx
mov dword [0x489338], ecx
mov ecx, dword [esp + 0xf8]
mov ecx, dword [ecx]
mov edx, dword [esp + 0xf4]
mov dword [edx], ecx
mov ecx, dword [0x48a0b4]
mov edx, ecx
inc edx
mov dword [0x48a0b4], edx
mov edx, 0x1911babb
sub edx, ecx
mov ecx, dword [0x48a448]
sub ecx, edx
mov dword [0x48a448], ecx
mov ecx, dword [esp + 0xf4]
mov dword [esp], ecx
mov dword [esp + 4], 0
mov dword [esp + 0x1c], eax
call fcn.0041f7a0
cmp eax, 0
jne 0x4062f8
mov eax, dword [esp + 0xf4]
mov dword [eax], 1
mov ax, word [0x482ad4]
mov cx, ax
inc ecx
mov dx, cx
mov word [0x482ad4], dx
movsx ecx, ax
mov esi, 0xbc8b49f3
sub esi, ecx
mov ecx, dword [0x4886c4]
sub ecx, esi
mov dword [0x4886c4], ecx
mov ax, word [0x48316c]
mov cx, ax
inc ecx
mov ax, cx
mov word [0x48316c], ax
movsx ecx, ax
sub ecx, 0x9303d7af
cmp ecx, 0x88182b51
jne 0x406368
mov ax, word [0x481f02]
movsx ecx, ax
mov edx, dword [0x486724]
add edx, ecx
mov dword [0x486724], edx
jmp 0x406377
mov eax, dword [0x488198]
add eax, 0x8f643558
mov dword [0x488198], eax
jmp 0x40637c
mov eax, 0xffe3dc5b
mov ecx, esp
lea edx, [esp + 0xa0]
mov dword [ecx + 0x10], edx
lea edx, [esp + 0xac]
mov dword [ecx + 0xc], edx
lea edx, [esp + 0xb8]
mov dword [ecx + 8], edx
lea edx, [esp + 0xc4]
mov dword [ecx + 4], edx
lea edx, [esp + 0xd0]
mov dword [ecx], edx
mov dword [ecx + 0x14], 0
mov dword [esp + 0x18], eax
call fcn.00421300
mov eax, dword [0x48ada0]
dec eax
mov dword [0x48ada0], eax
or eax, 0xe9c887e6
mov ecx, dword [esp + 0x18]
cmp ecx, eax
jne 0x4063f4
mov eax, dword [0x48d9d0]
xor eax, 0x45917c41
mov dword [0x48d9d0], eax
jmp 0x406403
mov eax, dword [0x485e78]
add eax, 0x6624aaf6
mov dword [0x485e78], eax
mov eax, dword [esp + 0xec]
mov dword [esp + 0x100], eax
mov eax, dword [esp + 0x100]
add esp, 0x104
pop esi
pop edi
pop ebx
ret