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

Disassembly:
push 0xffffffffffffffff
push 0x628392
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xa8
push ebx
push ebp
mov ebp, dword [esp + 0xc0]
mov eax, 0x76b981db
xor ebx, ebx
xor ecx, ecx
mul dword [ebp + 0x10]
push esi
push edi
shr edx, 6
mov dword [esp + 0x24], ecx
je 0x4c5c02
lea eax, [ecx + ecx*2]
shl eax, 3
sub eax, ecx
mov ecx, dword [0x6d67a8]
lea eax, [eax + eax*2]
lea ebp, [ebp + eax*2 + 0x14]
xor eax, eax
mov ax, word [ebp]
cmp eax, ecx
je 0x4c5bdf
mov esi, dword [0x6d620c]
lea ecx, [esp + 0x18]
push ecx
mov ecx, 0x6d6208
mov dword [esp + 0x1c], eax
call fcn.00409380
mov ecx, dword [0x6d620c]
mov dword [esp + 0x1c], eax
cmp eax, ecx
je 0x4c517a
mov edx, dword [esp + 0x18]
mov edi, dword [eax + 0xc]
cmp edx, edi
jb 0x4c517a
lea eax, [esp + 0x1c]
jmp 0x4c5182
mov dword [esp + 0x30], ecx
lea eax, [esp + 0x30]
cmp dword [eax], esi
jne 0x4c51d3
push 0x9e8
call fcn.00613321
add esp, 4
mov dword [esp + 0x1c], eax
cmp eax, ebx
mov dword [esp + 0xc0], ebx
je 0x4c51bd
mov ecx, eax
call fcn.00477100
mov dword [esp + 0xc0], 0xffffffff
mov dword [esp + 0x10], eax
jmp 0x4c5302
xor eax, eax
mov dword [esp + 0xc0], 0xffffffff
mov dword [esp + 0x10], eax
jmp 0x4c5302
xor eax, eax
lea ecx, [esp + 0x90]
mov ax, word [ebp]
mov dword [esp + 0x68], ebx
mov dword [esp + 0x64], eax
lea eax, [esp + 0x64]
push eax
push ecx
mov ecx, 0x6d6208
call fcn.00408bd0
mov edx, eax
mov eax, dword [edx]
mov eax, dword [eax + 0x10]
mov ecx, dword [edx + 4]
push eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x14], eax
call fcn.00455e10
mov eax, dword [esp + 0x14]
add esp, 4
cmp eax, ebx
je 0x4c5bdf
cmp dword [0x6d6214], ebx
je 0x4c5302
mov edi, dword [0x6d620c]
push eax
mov ecx, 0x6d6208
mov esi, eax
call fcn.00409380
mov ecx, dword [0x6d620c]
mov dword [esp + 0x1c], eax
cmp eax, ecx
je 0x4c525b
mov edx, dword [esi]
mov esi, dword [eax + 0xc]
cmp edx, esi
jb 0x4c525b
lea eax, [esp + 0x1c]
jmp 0x4c5263
mov dword [esp + 0x38], ecx
lea eax, [esp + 0x38]
mov ecx, dword [eax]
mov eax, dword [esp + 0x10]
cmp ecx, edi
je 0x4c5302
push eax
mov ecx, 0xa24690
call fcn.0047a980
mov ecx, dword [esp + 0x10]
push ecx
call fcn.0041dbd0
mov edx, dword [esp + 0x14]
push edx
call fcn.00435650
mov eax, dword [esp + 0x18]
mov ecx, dword [0xd11138]
add esp, 8
cmp ecx, eax
jne 0x4c52a7
mov dword [0xd11138], ebx
mov esi, eax
push eax
lea eax, [esp + 0xa0]
mov ecx, 0x6d6208
push eax
call fcn.0045bf90
lea ecx, [esp + 0x74]
push esi
push ecx
mov ecx, 0x6d6208
mov edi, eax
call fcn.0045b820
mov esi, dword [eax]
mov edx, dword [esp + 0x74]
mov edi, dword [edi]
lea eax, [esp + 0x2c]
push edx
push eax
push edi
push esi
mov dword [esp + 0x3c], ebx
call fcn.004e5060
add esp, 0x10
lea ecx, [esp + 0x98]
push edi
push esi
push ecx
mov ecx, 0x6d6208
call fcn.0045b310
mov eax, dword [esp + 0x10]
cmp eax, ebx
je 0x4c5bdf
mov dword [eax + 0x270], 1
mov edx, dword [esp + 0x10]
xor eax, eax
lea edi, [ebp + 0x5f]
mov dword [edx + 0x274], ebx
mov ecx, dword [esp + 0x10]
mov ax, word [ebp]
xor edx, edx
mov dword [ecx], eax
mov dl, byte [ebp + 0x11]
mov eax, dword [esp + 0x10]
and edx, 0xff
xor ecx, ecx
mov dword [eax + 0x150], edx
mov edx, dword [esp + 0x10]
mov cx, word [ebp + 2]
xor eax, eax
mov dword [edx + 0xc0], ecx
mov al, byte [ebp + 0xf]
mov ecx, dword [esp + 0x10]
and eax, 0xff
mov dword [ecx + 0xb8], eax
mov dl, byte [ebp + 0xe]
mov eax, dword [esp + 0x10]
and edx, 0x1f
mov dword [eax + 0x64], edx
mov cl, byte [ebp + 0xe]
mov edx, dword [esp + 0x10]
and ecx, 0xe0
xor eax, eax
mov dword [edx + 0x254], ecx
mov ax, word [ebp + 4]
mov edx, dword [esp + 0x10]
mov ecx, eax
and ecx, 0xff00
and eax, 0xff
shl ecx, 8
or ecx, eax
mov dword [edx + 0x60], ecx
mov eax, dword [ebp + 0x1a]
mov ecx, dword [esp + 0x10]
and eax, 0x7fffffff
mov dword [ecx + 0x260], eax
mov eax, dword [esp + 0x10]
mov edx, dword [ebp + 0x1e]
mov dword [eax + 0x138], edx
mov edx, dword [esp + 0x10]
mov ecx, dword [ebp + 0x22]
mov eax, dword [esp + 0xc8]
mov dword [edx + 0x814], ecx
mov edx, dword [esp + 0x10]
mov byte [eax + 0x85], 0
mov ecx, dword [ebp + 0x76]
mov dword [edx + 0x4a4], ecx
mov ecx, dword [esp + 0x10]
mov eax, dword [ebp + 0x72]
mov dword [ecx + 0x9c4], eax
mov edx, dword [esp + 0x10]
or ecx, 0xffffffff
xor eax, eax
add edx, 0x13c
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp dword [0xa4f274], ebx
jne 0x4c543c
mov ecx, dword [esp + 0x10]
push ebx
add ecx, 0x13c
push ecx
call fcn.00586da0
add esp, 8
mov ecx, dword [0xa23398]
xor edx, edx
mov dx, word [ebp + 0xc]
xor eax, eax
mov ax, word [ebp + 0xa]
push edx
mov edx, dword [0xa23394]
push eax
push ecx
push edx
call fcn.004259d0
mov ecx, dword [esp + 0x20]
add esp, 0x10
mov dword [ecx + 8], eax
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0xc], edx
mov ecx, dword [esp + 0x10]
mov esi, dword [0xa4f188]
mov dword [ecx + 0x10], esi
mov ecx, dword [esp + 0x10]
mov esi, dword [0xa4f18c]
mov dword [ecx + 0x14], esi
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0x340], eax
mov eax, dword [esp + 0x10]
or ecx, 0xffffffff
mov dword [eax + 0x358], edx
mov eax, 0x35c
mov edx, dword [esp + 0x10]
add eax, 4
cmp eax, 0x370
mov dword [eax + edx - 0x1c], ecx
mov edx, dword [esp + 0x10]
mov dword [eax + edx - 4], ecx
jl 0x4c54a4
mov eax, dword [esp + 0x10]
lea ecx, [eax + 0x358]
add eax, 0x340
push ecx
push eax
call fcn.0045f7e0
mov eax, dword [esp + 0x18]
mov edx, dword [0xa4f198]
add esp, 8
mov esi, dword [eax + 0x340]
sub esi, edx
mov dword [eax + 0x340], esi
mov eax, dword [esp + 0x10]
mov ecx, dword [0xa4f19c]
mov edx, dword [eax + 0x358]
sub edx, ecx
mov dword [eax + 0x358], edx
mov edx, dword [esp + 0x10]
mov dword [edx + 0x38c], ebx
mov eax, dword [esp + 0x10]
mov dword [eax + 0x390], ebx
mov ecx, dword [esp + 0x10]
mov edx, dword [0x6d6b50]
mov eax, 0x3ac
mov dword [ecx + 0x3a8], edx
mov ecx, dword [esp + 0x10]
add eax, 4
cmp eax, 0x3c0
mov dword [eax + ecx - 0x1c], ebx
mov edx, dword [esp + 0x10]
mov dword [eax + edx - 4], ebx
jl 0x4c5530
test dword [ebp + 0x1a], 0x80000000
je 0x4c5563
mov eax, dword [esp + 0x10]
mov dword [eax + 0x250], 0xc
jmp 0x4c55a3
xor eax, eax
mov al, byte [ebp + 0x10]
cmp eax, ebx
jl 0x4c557d
cmp eax, 0x22
jge 0x4c557d
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0x250], eax
jmp 0x4c55a3
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x4a4]
test cl, 2
je 0x4c559d
test cl, 1
je 0x4c559d
mov dword [eax + 0x250], 0x21
jmp 0x4c55a3
mov dword [eax + 0x250], ebx
mov edx, dword [esp + 0x10]
mov dword [edx + 0x38c], ebx
call fcn.006133b4
and eax, 0x8000000f
jns 0x4c55be
dec eax
or eax, 0xfffffff0
inc eax
mov ecx, dword [esp + 0x10]
lea edi, [ebp + 0x26]
mov dword [ecx + 0x254], eax
mov edx, dword [esp + 0x10]
or ecx, 0xffffffff
xor eax, eax
add edx, 0x68
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x10]
lea edi, [ebp + 0x39]
lea edx, [ecx + 0x7b]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp dword [0xa4f274], ebx
jne 0x4c563d
mov ecx, dword [esp + 0x10]
push ebx
add ecx, 0x68
push ecx
call fcn.00586da0
mov edx, dword [esp + 0x18]
push ebx
add edx, 0x7b
push edx
call fcn.00586da0
add esp, 0x10
mov ecx, dword [esp + 0x10]
mov eax, dword [ebp + 0x12]
mov dword [ecx + 0x258], eax
mov eax, dword [esp + 0x10]
mov edx, dword [ebp + 0x16]
mov dword [eax + 0x25c], edx
mov ecx, dword [ebp + 0x12]
or ecx, dword [ebp + 0x16]
jne 0x4c56c2
mov edx, dword [esp + 0x10]
mov dword [edx + 0x268], ebx
mov eax, dword [esp + 0x10]
mov dword [eax + 0x26c], ebx
mov ecx, dword [esp + 0x10]
mov byte [ecx + 0x4a1], 4
mov edx, dword [esp + 0x10]
mov byte [edx + 0x4a2], 4
mov eax, dword [esp + 0x10]
mov byte [eax + 0x4a3], 4
mov ecx, dword [esp + 0x10]
mov esi, dword [ecx + 0x818]
cmp esi, ebx
je 0x4c5726
mov ecx, esi
call fcn.005a07e0
push esi
call fcn.006066eb
mov edx, dword [esp + 0x14]
add esp, 4
mov dword [edx + 0x818], ebx
jmp 0x4c5726
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x818], ebx
jne 0x4c5712
push 0xec
call fcn.00613321
add esp, 4
mov dword [esp + 0x1c], eax
cmp eax, ebx
mov dword [esp + 0xc0], 1
je 0x4c56f7
mov ecx, eax
call fcn.0041d6c0
jmp 0x4c56f9
xor eax, eax
cmp eax, ebx
mov dword [esp + 0xc0], 0xffffffff
je 0x4c5712
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0x818], eax
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x818]
cmp ecx, ebx
je 0x4c5726
push eax
call fcn.0041d730
mov esi, dword [esp + 0x10]
cmp esi, ebx
je 0x4c57cc
mov edi, dword [0x6d620c]
push esi
mov ecx, 0x6d6208
call fcn.00409380
mov ecx, dword [0x6d620c]
mov dword [esp + 0x1c], eax
cmp eax, ecx
je 0x4c5760
mov edx, dword [esi]
mov esi, dword [eax + 0xc]
cmp edx, esi
jb 0x4c5760
lea eax, [esp + 0x1c]
jmp 0x4c5768
mov dword [esp + 0x28], ecx
lea eax, [esp + 0x28]
cmp dword [eax], edi
jne 0x4c57cc
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x50]
push edx
mov dword [esp + 0x58], ebx
mov ecx, dword [eax]
lea eax, [esp + 0xac]
mov dword [esp + 0x54], ecx
push eax
mov ecx, 0x6d6208
call fcn.00408bd0
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x20], edx
mov dword [eax + 0x10], ecx
mov edx, dword [esp + 0x10]
push edx
call fcn.00435520
mov eax, dword [esp + 0x14]
add esp, 4
mov ecx, 0xa24690
push eax
call fcn.0047aa60
mov ecx, dword [esp + 0x10]
push ecx
call fcn.004d9b90
add esp, 4
mov edx, dword [esp + 0x10]
push edx
call fcn.00455af0
mov cx, word [ebp + 6]
add esp, 4
mov edx, ecx
mov ax, cx
shr edx, 5
shr ax, 0xb
and edx, 0x2f
and ecx, 0x1f
cmp ax, 1
jae 0x4c57fa
mov eax, 1
cmp cx, 1
jae 0x4c5805
mov ecx, 1
cmp dx, 1
jae 0x4c5810
mov edx, 1
and edx, 0xffff
push ebx
push edx
and ecx, 0xffff
push edx
and eax, 0xffff
push ecx
push eax
mov eax, dword [esp + 0x24]
push eax
call fcn.00456a80
mov ecx, dword [esp + 0xe0]
add esp, 0x18
mov eax, dword [ecx + 0x8a]
test al, 2
je 0x4c58ba
test al, 1
je 0x4c58ba
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0xc0]
dec ecx
cmp ecx, 0x7f
ja case.0x4c5860.9
xor edx, edx
mov dl, byte [ecx + 0x4c6754]
jmp dword [edx*4 + 0x4c6730]
mov dword [eax + 0x60], 0x102
jmp 0x4c58ad
mov dword [eax + 0x60], 0x103
jmp 0x4c58ad
mov dword [eax + 0x60], 0x106
jmp 0x4c58ad
mov dword [eax + 0x60], 0x107
jmp 0x4c58ad
mov dword [eax + 0x60], 0x104
jmp 0x4c58ad
mov dword [eax + 0x60], 0x105
jmp 0x4c58ad
mov dword [eax + 0x60], 0x108
jmp 0x4c58ad
mov dword [eax + 0x60], 0x109
mov eax, dword [esp + 0x10]
push eax
call fcn.00456d80
add esp, 4
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0x258]
mov ecx, dword [edx + 0x25c]
and eax, ebx
and ecx, 0x40
or eax, ecx
je 0x4c58e7
mov dword [edx + 0x60], 0x54
mov eax, dword [esp + 0x10]
push eax
call fcn.00456d80
add esp, 4
lea ecx, [esp + 0x58]
xor eax, eax
mov ax, word [ebp + 8]
lea edx, [esp + 0x40]
push ecx
push edx
push eax
mov ecx, 0xced988
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x64], ebx
call fcn.00534700
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x10]
and ecx, 0xffff
push ecx
push 4
push edx
call fcn.00456390
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x1c]
add esp, 0xc
and eax, 0xffff
push eax
push ecx
mov ecx, 0x68f0b0
call fcn.00425720
mov edx, dword [esp + 0x10]
lea edi, [ebp + 0x4c]
or ecx, 0xffffffff
xor eax, eax
add edx, 0x8e
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp dword [0xa4f274], ebx
jne 0x4c5983
mov ecx, dword [esp + 0x10]
push ebx
add ecx, 0x8e
push ecx
call fcn.00586da0
add esp, 8
mov edx, dword [esp + 0x10]
mov edi, 0x68ef6c
or ecx, 0xffffffff
xor eax, eax
add edx, 0xa1
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x10]
push ecx
call fcn.00473fa0
mov esi, dword [0xd1233c]
mov ebp, eax
add esp, 4
cmp ebp, ebx
je 0x4c5ad4
lea edx, [esp + 0x10]
mov ecx, 0xd12338
push edx
call fcn.0045c880
mov edx, dword [0xd1233c]
mov ecx, dword [esp + 0x10]
cmp eax, edx
mov dword [esp + 0x1c], eax
je 0x4c59f8
cmp ecx, dword [eax + 0xc]
jb 0x4c59f8
lea eax, [esp + 0x1c]
jmp 0x4c5a00
mov dword [esp + 0x34], edx
lea eax, [esp + 0x34]
cmp dword [eax], esi
jne 0x4c5bb7
lea eax, [esp + 0x10]
mov ecx, 0xd12338
push eax
call fcn.0045c9e0
lea ecx, [esp + 0x10]
lea edx, [esp + 0x88]
push ecx
push edx
mov ecx, 0xd12338
mov esi, eax
call fcn.0045bb60
mov edi, dword [eax]
mov eax, dword [esp + 0x88]
lea ecx, [esp + 0x3c]
push eax
push ecx
push esi
push edi
mov dword [esp + 0x4c], ebx
call fcn.0045cdc0
add esp, 0x10
lea edx, [esp + 0x80]
mov ecx, 0xd12338
push esi
push edi
push edx
call fcn.0045ba30
cmp ebp, 1
mov dword [0xa58464], 1
jne 0x4c5a7c
mov eax, dword [esp + 0x10]
push 0x963
push eax
jmp 0x4c5a97
cmp ebp, 2
jne 0x4c5a8d
mov ecx, dword [esp + 0x10]
push 0x964
push ecx
jmp 0x4c5a97
mov edx, dword [esp + 0x10]
push 0xbcc
push edx
call fcn.0041b470
add esp, 8
lea ecx, [esp + 0x5c]
mov esi, eax
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x6c]
push ecx
push edx
mov ecx, 0xd12338
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], ebx
call fcn.0045b900
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov dword [eax + 0x10], esi
mov dword [esp + 0x7c], edx
jmp 0x4c5bb3
lea eax, [esp + 0x10]
mov ecx, 0xd12338
push eax
call fcn.0045c880
mov edx, dword [0xd1233c]
mov ecx, dword [esp + 0x10]
cmp eax, edx
mov dword [esp + 0x1c], eax
je 0x4c5b00
cmp ecx, dword [eax + 0xc]
jb 0x4c5b00
lea eax, [esp + 0x1c]
jmp 0x4c5b08
mov dword [esp + 0x14], edx
lea eax, [esp + 0x14]
cmp dword [eax], esi
je 0x4c5bb7
mov dword [esp + 0x48], ecx
lea ecx, [esp + 0x48]
lea edx, [esp + 0xa0]
push ecx
push edx
mov ecx, 0xd12338
mov dword [esp + 0x54], ebx
call fcn.0045b900
mov ecx, eax
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
mov edx, dword [ecx + 4]
push eax
mov ecx, 0xd125f0
mov dword [esp + 0x24], edx
call fcn.0059c340
cmp eax, ebx
je 0x4c5b61
mov cl, byte [eax + 0xa0]
mov dword [eax + 0xa4], ebx
and cl, 0xfd
mov byte [eax + 0xa0], cl
lea ecx, [esp + 0x10]
push ecx
mov ecx, 0xd12338
call fcn.0045c9e0
mov edi, eax
lea edx, [esp + 0x10]
lea eax, [esp + 0x44]
push edx
push eax
mov ecx, 0xd12338
call fcn.0045bb60
mov esi, dword [eax]
cmp esi, edi
mov dword [esp + 0x18], esi
je 0x4c5b9f
lea ecx, [esp + 0x18]
call fcn.0045caf0
cmp dword [esp + 0x18], edi
jne 0x4c5b90
push edi
lea ecx, [esp + 0x88]
push esi
push ecx
mov ecx, 0xd12338
call fcn.0045ba30
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x250]
cmp eax, 0xc
je 0x4c5bd6
cmp eax, 0x11
je 0x4c5bd6
cmp eax, 0x12
je 0x4c5bd6
cmp eax, 0x13
je 0x4c5bd6
cmp eax, 0x19
jne 0x4c5bdf
push ecx
call fcn.004528a0
add esp, 4
mov ebp, dword [esp + 0xc8]
mov eax, 0x76b981db
mov ecx, dword [esp + 0x24]
mul dword [ebp + 0x10]
inc ecx
shr edx, 6
cmp ecx, edx
mov dword [esp + 0x24], ecx
jb 0x4c511f
cmp dword [ebp + 8], 1
je 0x4c6716
mov esi, dword [ebp + 0x1014]
mov eax, 0x29e4129f
mul esi
sub esi, edx
xor ecx, ecx
shr esi, 1
add esi, edx
mov dword [esp + 0x18], ecx
shr esi, 5
je 0x4c6716
jmp 0x4c5c34
mov ecx, dword [esp + 0x18]
lea edx, [ecx + ecx*4]
mov esi, dword [0x6d620c]
lea eax, [ecx + edx*2]
mov ecx, dword [esp + 0xc8]
lea edx, [ecx + eax*4 + 0x1018]
lea ecx, [esp + 0x24]
push ecx
mov ecx, 0x6d6208
lea ebx, [eax + edx]
mov eax, dword [eax + edx]
shr eax, 0x10
mov dword [esp + 0x28], eax
call fcn.00409380
mov ecx, dword [0x6d620c]
mov dword [esp + 0x14], eax
cmp eax, ecx
je 0x4c5c89
mov edx, dword [esp + 0x24]
mov edi, dword [eax + 0xc]
cmp edx, edi
jb 0x4c5c89
lea eax, [esp + 0x14]
jmp 0x4c5c91
mov dword [esp + 0x3c], ecx
lea eax, [esp + 0x3c]
cmp dword [eax], esi
jne 0x4c66e8
mov esi, dword [ebx]
shr esi, 0x10
cmp si, 1
jb 0x4c5f6d
cmp si, 0x3fff
ja 0x4c5f6d
mov eax, dword [ebx + 0x10]
lea ecx, [esp + 0x14]
lea edx, [esp + 0x84]
push ecx
push edx
mov ecx, 0x68ec40
mov dword [esp + 0x1c], eax
call fcn.004e26e0
mov eax, dword [eax]
mov ecx, dword [0x68ec44]
cmp eax, ecx
je 0x4c66e8
add eax, 0x10
test eax, eax
mov dword [esp + 0x14], eax
je 0x4c66e8
push 0x9e8
call fcn.00613321
add esp, 4
mov dword [esp + 0x44], eax
test eax, eax
mov dword [esp + 0xc0], 2
je 0x4c5d1b
mov ecx, eax
call fcn.00477100
mov esi, eax
jmp 0x4c5d1d
xor esi, esi
test esi, esi
mov dword [esp + 0xc0], 0xffffffff
je 0x4c66e8
mov dword [esi + 0x270], 1
mov dword [esi + 0x274], 0
mov ecx, dword [ebx + 4]
mov edx, dword [0xa23398]
xor eax, eax
mov ax, word [ebx + 4]
shr ecx, 0x10
push eax
mov eax, dword [0xa23394]
push ecx
push edx
push eax
call fcn.004259d0
mov ecx, dword [ebx]
lea edi, [esi + 0x340]
shr ecx, 0x10
mov dword [esi], ecx
xor ecx, ecx
mov cx, word [ebx]
mov dword [esi + 8], eax
mov dword [esi + 0x60], ecx
mov dword [esi + 0xc], edx
mov ecx, dword [0xa4f188]
lea ebp, [esi + 0x358]
mov dword [esi + 0x10], ecx
mov ecx, dword [0xa4f18c]
mov dword [esi + 0x14], ecx
mov dword [edi], eax
mov dword [ebp], edx
mov edx, dword [ebx + 0x2f]
mov dword [esi + 0xb8], edx
mov eax, dword [ebx + 0x33]
add esp, 0x10
mov dword [esi + 0x5c], eax
lea eax, [esi + 0x35c]
mov ecx, 5
or edx, 0xffffffff
mov dword [eax - 0x18], edx
mov dword [eax], edx
add eax, 4
dec ecx
jne 0x4c5dbc
push ebp
push edi
call fcn.0045f7e0
mov ecx, dword [0xa4f198]
mov edx, dword [edi]
mov eax, dword [ebp]
sub edx, ecx
mov dword [edi], edx
mov edx, dword [0xa4f19c]
sub eax, edx
add esp, 8
mov dword [ebp], eax
xor eax, eax
mov dword [esi + 0x38c], eax
mov dword [esi + 0x390], eax
mov eax, dword [0x6d6b50]
mov ecx, 5
mov dword [esi + 0x3a8], eax
lea eax, [esi + 0x3ac]
xor ebp, ebp
mov dword [eax - 0x18], ebp
mov dword [eax], ebp
add eax, 4
dec ecx
jne 0x4c5e11
mov eax, dword [ebx + 8]
mov ecx, eax
and ecx, 0xff000000
cmp ecx, 0x20000000
jae 0x4c5e3a
shr eax, 0x18
mov dword [esi + 0x250], eax
jmp 0x4c5e44
mov dword [esi + 0x250], 0x1d
mov edx, dword [ebx + 8]
mov dword [esi + 0x254], ebp
mov eax, dword [ebx]
and edx, 0xff0000
shr eax, 0x10
cmp edx, 0x80000
cmp ax, 1
jb 0x4c5e88
cmp ax, 0x3fff
ja 0x4c5e88
mov eax, dword [esp + 0x14]
push 0xd
add eax, 8
lea ecx, [esi + 0x68]
push eax
push ecx
mov dword [esi + 0xe4], ebp
call fcn.006147d0
add esp, 0xc
jmp 0x4c5ea6
cmp ax, 0x4000
jb 0x4c5ea6
cmp ax, 0x5fff
ja 0x4c5ea6
mov edx, dword [ebx + 0x10]
mov dword [esi + 0xe4], edx
mov eax, dword [ebx + 0xc]
mov dword [esi + 0xd8], eax
mov dword [esi + 0x38c], ebp
mov eax, dword [0xa4f274]
cmp eax, ebp
jne 0x4c5ec2
lea ecx, [esi + 0x68]
push ebp
push ecx
call fcn.00586da0
add esp, 8
mov eax, dword [esi]
cmp eax, 1
jb 0x4c5ed9
cmp eax, 0x3fff
ja 0x4c5ed9
push esi
call fcn.00456bd0
add esp, 4
mov edi, dword [0x6d620c]
push esi
mov ecx, 0x6d6208
call fcn.00409380
mov ecx, dword [0x6d620c]
mov dword [esp + 0x14], eax
cmp eax, ecx
je 0x4c5f07
mov edx, dword [esi]
mov ebx, dword [eax + 0xc]
cmp edx, ebx
jb 0x4c5f07
lea eax, [esp + 0x14]
jmp 0x4c5f0f
mov dword [esp + 0x34], ecx
lea eax, [esp + 0x34]
cmp dword [eax], edi
jne 0x4c5f5f
mov eax, dword [esi]
lea ecx, [esp + 0x48]
lea edx, [esp + 0xa0]
push ecx
push edx
mov ecx, 0x6d6208
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ebp
call fcn.00408bd0
mov ecx, eax
push esi
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov dword [eax + 0x10], esi
mov dword [esp + 0x74], edx
call fcn.00435520
add esp, 4
mov ecx, 0xa24690
push esi
call fcn.0047aa60
push esi
call fcn.004d9b90
add esp, 4
push esi
call fcn.00455af0
add esp, 4
jmp 0x4c66e8
cmp si, 0x4000
jb 0x4c636f
cmp si, 0x5fff
ja 0x4c636f
mov ax, word [ebx + 8]
lea ecx, [esp + 0x14]
lea edx, [esp + 0x80]
push ecx
push edx
mov ecx, 0x68ec30
mov dword [esp + 0x1c], eax
call fcn.00436ec0
mov eax, dword [eax]
mov ecx, dword [0x68ec34]
cmp eax, ecx
je 0x4c66e8
add eax, 0x10
test eax, eax
mov dword [esp + 0x10], eax
je 0x4c66e8
push 0x9e8
call fcn.00613321
add esp, 4
mov dword [esp + 0x44], eax
test eax, eax
mov dword [esp + 0xc0], 3
je 0x4c5fec
mov ecx, eax
call fcn.00477100
mov ebp, eax
jmp 0x4c5fee
xor ebp, ebp
test ebp, ebp
mov dword [esp + 0xc0], 0xffffffff
je 0x4c66e8
mov dword [ebp + 0x270], 1
mov dword [ebp + 0x274], 0
mov ecx, dword [ebx + 4]
mov edx, dword [0xa23398]
xor eax, eax
mov ax, word [ebx + 4]
shr ecx, 0x10
push eax
mov eax, dword [0xa23394]
push ecx
push edx
push eax
call fcn.004259d0
lea esi, [ebp + 0x4b4]
lea ecx, [ebx + 0x1c]
mov dword [esp + 0x78], edx
mov edi, eax
mov eax, dword [ecx]
mov edx, esi
push ebp
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov dword [edx + 4], eax
mov eax, dword [ecx + 8]
mov dword [edx + 8], eax
mov eax, dword [ecx + 0xc]
mov dword [edx + 0xc], eax
mov ax, word [ecx + 0x10]
mov word [edx + 0x10], ax
mov cl, byte [ecx + 0x12]
xor eax, eax
mov byte [edx + 0x12], cl
mov edx, dword [ebx]
shr edx, 0x10
mov dword [ebp], edx
mov ax, word [ebx]
mov dword [ebp + 0x60], eax
call fcn.0051bd90
add esp, 0x14
test al, al
je 0x4c60d4
push esi
call fcn.0051bdb0
add esp, 4
test al, al
je 0x4c60d4
mov ecx, dword [ebx]
shr ecx, 0x10
mov word [0xcfb42e], cx
mov edx, dword [ebx + 0xc]
mov dword [0xcfb418], edx
mov eax, dword [ebx + 0x10]
mov dword [0xcfb420], eax
call fcn.005a2270
mov ecx, dword [0xcfb6ec]
mov eax, 1
cmp ecx, eax
je 0x4c60ca
mov dword [0xcfb6ec], eax
mov dword [0xcfb3dc], eax
mov dword [0xcfb3d8], eax
mov eax, dword [esp + 0x68]
mov dword [ebp + 8], edi
mov dword [ebp + 0xc], eax
mov ecx, dword [0xa4f188]
lea esi, [ebp + 0x340]
mov dword [ebp + 0x10], ecx
mov edx, dword [0xa4f18c]
mov dword [ebp + 0x358], eax
mov eax, dword [esp + 0x10]
mov dword [esi], edi
lea edi, [ebp + 0x358]
mov dword [ebp + 0x14], edx
mov ecx, dword [eax + 0x58]
lea eax, [ebp + 0x35c]
mov dword [ebp + 0xb8], ecx
mov ecx, 5
or edx, 0xffffffff
mov dword [eax - 0x18], edx
mov dword [eax], edx
add eax, 4
dec ecx
jne 0x4c611f
push edi
push esi
call fcn.0045f7e0
mov edx, dword [0xa4f198]
mov eax, dword [esi]
mov ecx, dword [edi]
sub eax, edx
mov dword [esi], eax
mov eax, dword [0xa4f19c]
sub ecx, eax
xor eax, eax
mov dword [edi], ecx
mov dword [ebp + 0x38c], eax
mov dword [ebp + 0x390], eax
mov ecx, dword [0x6d6b50]
add esp, 8
mov dword [ebp + 0x3a8], ecx
lea eax, [ebp + 0x3ac]
mov ecx, 5
xor edx, edx
mov dword [eax - 0x18], edx
mov dword [eax], edx
add eax, 4
dec ecx
jne 0x4c6172
mov eax, dword [ebx + 8]
mov edx, eax
and edx, 0xff000000
cmp edx, 0x20000000
jae 0x4c619b
shr eax, 0x18
mov dword [ebp + 0x250], eax
jmp 0x4c61a5
mov dword [ebp + 0x250], 0x1d
mov eax, dword [ebx + 8]
mov dword [esp + 0x28], eax
and eax, 0xff0000
cmp eax, 0x80000
jae 0x4c61c0
xor eax, eax
mov al, byte [esp + 0x2a]
jmp 0x4c61d1
call fcn.006133b4
and eax, 0x8000000f
jns 0x4c61d1
dec eax
or eax, 0xfffffff0
inc eax
mov dword [ebp + 0x254], eax
mov ecx, dword [ebx + 8]
mov eax, dword [esp + 0x10]
and ecx, 0xffff
mov dword [ebp + 0x424], ecx
or ecx, 0xffffffff
lea edi, [eax + 4]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [ebp + 0x68]
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x10]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax + 0x68]
test ch, 4
je 0x4c6226
mov ecx, 1
mov dword [ebp + 0xe4], ecx
jmp 0x4c6232
mov ecx, dword [ebx + 0x10]
mov dword [ebp + 0xe4], ecx
mov ecx, dword [ebx + 0xc]
mov dword [ebp + 0xd8], ecx
mov eax, dword [eax + 0x68]
mov dword [ebp + 0x5c], eax
mov dword [ebp + 0x38c], 0
mov eax, dword [0xa4f274]
test eax, eax
jne 0x4c626a
push 0
push edx
call fcn.00586da0
lea eax, [ebp + 0x4b4]
push 0
push eax
call fcn.00586da0
add esp, 0x10
push ebp
call fcn.00456d80
mov ecx, dword [esp + 0x14]
add esp, 4
mov edx, dword [ecx + 0x60]
push ebp
mov dword [ebp + 0x18], edx
mov esi, dword [0x6d620c]
mov ecx, 0x6d6208
call fcn.00409380
mov ecx, dword [0x6d620c]
mov dword [esp + 0x14], eax
cmp eax, ecx
je 0x4c62ac
mov edx, dword [ebp]
mov edi, dword [eax + 0xc]
cmp edx, edi
jb 0x4c62ac
lea eax, [esp + 0x14]
jmp 0x4c62b4
mov dword [esp + 0x2c], ecx
lea eax, [esp + 0x2c]
cmp dword [eax], esi
jne 0x4c6309
mov eax, dword [ebp]
lea ecx, [esp + 0x5c]
lea edx, [esp + 0xa8]
push ecx
push edx
mov ecx, 0x6d6208
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], 0
call fcn.00408bd0
mov ecx, eax
push ebp
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov dword [eax + 0x10], ebp
mov dword [esp + 0x74], edx
call fcn.00435520
add esp, 4
mov ecx, 0xa24690
push ebp
call fcn.0047aa60
push ebp
call fcn.004d9b90
add esp, 4
push ebp
call fcn.00455af0
push ebp
call fcn.00413f10
add esp, 8
test eax, eax
je 0x4c6334
mov esi, dword [ebp + 0x250]
xor eax, eax
cmp esi, 0xa
setne al
push eax
push ebp
call fcn.00455cb0
add esp, 8
push ebp
call fcn.0051bd90
add esp, 4
test al, al
je 0x4c66e8
lea eax, [ebp + 0x4b4]
push eax
call fcn.0051bdb0
add esp, 4
test al, al
je 0x4c66e8
push 0x95b
push ebp
call fcn.0041b470
add esp, 8
jmp 0x4c66e8
cmp si, 0xa000
jb 0x4c652a
cmp si, 0xdfff
ja 0x4c652a
mov edx, dword [ebx + 4]
mov eax, dword [0xa23398]
mov di, word [ebx + 8]
xor ecx, ecx
mov cx, word [ebx + 4]
shr edx, 0x10
push ecx
mov ecx, dword [0xa23394]
push edx
push eax
push ecx
call fcn.004259d0
push 0x28
mov ebp, eax
mov dword [esp + 0xa0], edx
call fcn.00613321
add esp, 0x14
test eax, eax
je 0x4c63db
xor ecx, ecx
mov dword [eax + 0x1c], 1
mov word [eax + 0x20], cx
mov word [eax + 0x22], cx
mov word [eax + 0x24], cx
mov word [eax + 0x26], cx
jmp 0x4c63df
xor eax, eax
xor ecx, ecx
and esi, 0xffff
mov dword [0xced980], eax
mov dword [eax], esi
mov edx, dword [0xced980]
and edi, 0xffff
mov dword [edx + 4], edi
mov eax, dword [0xced980]
mov dword [eax + 8], ebp
mov edx, dword [0xced980]
mov eax, dword [esp + 0x8c]
mov dword [edx + 0xc], eax
mov edx, dword [0xced980]
mov eax, dword [0xa4f188]
mov dword [edx + 0x10], eax
mov edx, dword [0xced980]
mov eax, dword [0xa4f18c]
mov dword [edx + 0x14], eax
mov eax, dword [0xced980]
mov edx, dword [ebx + 0x10]
mov dword [eax + 0x18], edx
mov eax, dword [0xced980]
mov dx, word [ebx]
mov word [eax + 0x24], dx
mov edx, dword [ebx + 0xc]
mov eax, dword [0xced980]
shr edx, 0x10
mov word [eax + 0x22], dx
mov eax, dword [0xced980]
mov dx, word [ebx + 0xc]
mov word [eax + 0x20], dx
mov esi, dword [0xced980]
cmp esi, ecx
je 0x4c6516
mov edi, dword [0x6d620c]
push esi
mov ecx, 0x6d6208
call fcn.00409380
mov ecx, dword [0x6d620c]
mov dword [esp + 0x14], eax
cmp eax, ecx
je 0x4c649e
mov edx, dword [esi]
mov esi, dword [eax + 0xc]
cmp edx, esi
jb 0x4c649e
lea eax, [esp + 0x14]
jmp 0x4c64a6
mov dword [esp + 0x38], ecx
lea eax, [esp + 0x38]
cmp dword [eax], edi
jne 0x4c6516
mov eax, dword [0xced980]
lea edx, [esp + 0x50]
push edx
mov dword [esp + 0x58], 0
mov ecx, dword [eax]
lea eax, [esp + 0x94]
mov dword [esp + 0x54], ecx
push eax
mov ecx, 0x6d6208
call fcn.00408bd0
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [0xced980]
mov dword [esp + 0x70], edx
mov dword [eax + 0x10], ecx
mov edx, dword [0xced980]
push edx
call fcn.00435520
mov eax, dword [0xced980]
add esp, 4
mov ecx, 0xa24690
push eax
call fcn.0047aa60
mov ecx, dword [0xced980]
push ecx
call fcn.004d9b90
add esp, 4
mov edx, dword [0xced980]
push edx
call fcn.00455af0
add esp, 4
jmp 0x4c66e8
cmp si, 0xe000
jb 0x4c66e8
cmp si, 0xffff
ja 0x4c66e8
mov ecx, dword [ebx + 4]
mov edx, dword [0xa23398]
mov di, word [ebx]
xor eax, eax
mov ax, word [ebx + 4]
shr ecx, 0x10
push eax
mov eax, dword [0xa23394]
push ecx
push edx
push eax
call fcn.004259d0
push 0x28
mov ebx, eax
mov ebp, edx
call fcn.00613321
xor ecx, ecx
add esp, 0x14
cmp eax, ecx
je 0x4c6589
mov dword [eax + 4], ecx
mov dword [eax + 0x1c], 1
mov dword [eax + 0x20], ecx
mov dword [eax + 0x24], ecx
jmp 0x4c658b
xor eax, eax
and esi, 0xffff
mov dword [0xced140], eax
mov dword [eax], esi
mov edx, dword [0xced140]
and edi, 0xffff
mov dword [edx + 4], ecx
mov eax, dword [0xced140]
mov dword [eax + 8], ebx
mov edx, dword [0xced140]
mov dword [edx + 0xc], ebp
mov eax, dword [0xced140]
mov dword [eax + 0x24], edi
mov edx, dword [0xced140]
mov eax, dword [0xa4f188]
mov dword [edx + 0x10], eax
mov edx, dword [0xced140]
mov eax, dword [0xa4f18c]
mov dword [edx + 0x14], eax
mov edx, dword [0xced140]
mov dword [edx + 0x20], ecx
mov edi, dword [0xced140]
cmp edi, ecx
je 0x4c66cf
mov ebx, dword [0x6d620c]
lea ecx, [esp + 0x30]
call fcn.006071a8
mov ecx, dword [0x6d620c]
mov esi, ecx
mov eax, dword [ecx + 4]
mov ecx, dword [0x68e684]
cmp eax, ecx
je 0x4c662b
mov edx, dword [edi]
cmp dword [eax + 0xc], edx
jae 0x4c6623
mov eax, dword [eax + 8]
jmp 0x4c6627
mov esi, eax
mov eax, dword [eax]
cmp eax, ecx
jne 0x4c6619
lea ecx, [esp + 0x30]
call fcn.00607244
mov eax, dword [0x6d620c]
mov dword [esp + 0x14], esi
cmp esi, eax
je 0x4c6650
mov ecx, dword [edi]
mov edx, dword [esi + 0xc]
cmp ecx, edx
jb 0x4c6650
lea eax, [esp + 0x14]
jmp 0x4c6658
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x1c]
cmp dword [eax], ebx
jne 0x4c66cf
mov edx, dword [0xced140]
lea ecx, [esp + 0x78]
push ecx
mov ecx, 0x6d6208
mov eax, dword [edx]
lea edx, [esp + 0xb4]
push edx
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], 0
call fcn.00408bd0
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [0xced140]
mov dword [esp + 0x70], edx
mov dword [eax + 0x10], ecx
mov edx, dword [0xced140]
push edx
call fcn.00435520
mov eax, dword [0xced140]
add esp, 4
mov ecx, 0xa24690
push eax
call fcn.0047aa60
mov ecx, dword [0xced140]
push ecx
call fcn.004d9b90
add esp, 4
mov edx, dword [0xced140]
push edx
call fcn.00455af0
add esp, 4
mov dword [0xced140], 0
mov eax, dword [esp + 0xc8]
mov esi, dword [esp + 0x18]
inc esi
mov ecx, dword [eax + 0x1014]
mov eax, 0x29e4129f
mul ecx
sub ecx, edx
mov dword [esp + 0x18], esi
shr ecx, 1
add ecx, edx
shr ecx, 5
cmp esi, ecx
jb 0x4c5c30
mov ecx, dword [esp + 0xb8]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0xb4
ret