Function at 0x4ffc54
Capabilities:
Get file size

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff20
push ebx
push esi
push edi
xor eax, eax
mov dword [ebp - 0xdc], eax
mov dword [ebp - 0xa0], eax
mov dword [ebp - 0xe0], eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x20], eax
xor eax, eax
push ebp
push 0x500c81
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x672558]
cmp byte [eax], 0
jne 0x4ffcc6
mov eax, dword [0x672428]
cmp byte [eax + 0x159], 0
je 0x4ffcc6
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
cmp byte [eax + 0x294], 0
je 0x4ffcca
mov eax, dword [0x672428]
test byte [eax + 0x16f], 0x40
jne 0x4ffcca
xor eax, eax
jmp 0x4ffccc
mov al, 1
mov byte [ebp - 0x49], al
cmp byte [ebp - 0x49], 0
je 0x500c31
call fcn.005397f4
test eax, eax
jne 0x4ffce6
mov al, 1
jmp 0x4ffcf1
call fcn.005397f4
mov al, byte [eax + 0x146]
mov edx, dword [ebp + 8]
mov edx, dword [edx - 4]
cmp al, byte [edx + 0x1c0]
je 0x4ffd2a
mov edx, dword [ebp + 8]
mov edx, dword [edx - 4]
mov edx, dword [edx + 0x268]
xor ecx, ecx
mov dword [edx + 0x160], ecx
mov ecx, dword [ebp + 8]
xor ecx, ecx
mov dword [edx + 0x16c], ecx
mov edx, dword [ebp + 8]
mov edx, dword [edx - 4]
mov byte [edx + 0x1c0], al
call fcn.005397f4
test eax, eax
je 0x5005e8
call fcn.005397ec
mov ebx, eax
call fcn.005397f4
call fcn.005c514c
test al, al
jne 0x4ffd98
mov eax, dword [ebx + 0x10]
cmp dword [eax + 0x18], 1
jle 0x4ffd98
xor eax, eax
mov dword [ebp - 0x24], eax
xor eax, eax
mov dword [ebp - 0x28], eax
xor eax, eax
mov dword [ebp - 0x2c], eax
mov eax, dword [ebx + 0x10]
mov edi, dword [eax + 0x18]
dec edi
cmp edi, 0
jl 0x4ffdb8
mov eax, dword [ebx + 0x10]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax + edi*4]
add eax, 0x194
mov edx, dword [eax + 0x20]
add dword [ebp - 0x24], edx
mov edx, dword [eax + 0x24]
add dword [ebp - 0x28], edx
mov eax, dword [eax + 0x28]
add dword [ebp - 0x2c], eax
dec edi
cmp edi, 0xffffffff
jne 0x4ffd70
jmp 0x4ffdb8
call fcn.005397f4
mov edx, dword [eax + 0xb0]
mov dword [ebp - 0x24], edx
mov edx, dword [eax + 0xb4]
mov dword [ebp - 0x28], edx
mov eax, dword [eax + 0xb8]
mov dword [ebp - 0x2c], eax
call fcn.005397f4
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x50]
add eax, 0x250
mov dword [ebp - 0x54], eax
mov bl, 0x12
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
mov eax, dword [eax + 0x268]
mov eax, dword [eax + 0x140]
mov edx, dword [0x672428]
not eax
and eax, dword [edx + 0x15a]
mov edx, ebx
cmp dl, 0x1f
ja 0x4ffdfa
and edx, 0x7f
bt eax, edx
jae 0x5005dc
lea eax, [ebp - 0x10]
call fcn.00403274
xor eax, eax
mov al, bl
cmp eax, 0x12
ja case.0x4ffe15.4
jmp dword [eax*4 + 0x4ffe1c]
mov eax, dword [ebp - 0x50]
mov al, byte [eax + 0x146]
dec eax
sub al, 2
jae 0x4ffecb
lea eax, [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x54]
mov edx, dword [eax]
mov eax, dword [ebp - 0x50]
call fcn.005644f8
mov eax, dword [eax + 8]
inc eax
mov dword [ebp - 0x9c], eax
mov byte [ebp - 0x98], 0
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x4cc]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x94], eax
mov byte [ebp - 0x90], 0
lea edx, [ebp - 0x9c]
mov eax, 0x500c90
mov ecx, 1
call fcn.0065d7d4
jmp case.0x4ffe15.4
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0x40e], 0
je 0x4ffefc
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x1dc]
mov edx, dword [ebp - 0x50]
mov edx, dword [edx + 0x134]
cmp eax, dword [edx + 0x18]
jl 0x4ffefc
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x1dc]
mov dword [ebp - 0x34], eax
jmp 0x4fff17
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x134]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x50]
mov edx, dword [ebp - 0x34]
mov dword [eax + 0x1dc], edx
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0x405], 0
jne 0x4fff38
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0x404], 0
jne 0x4fff65
cmp dword [ebp - 0x34], 0x3e8
jle 0x4fff65
mov edx, 0x3e8
mov eax, dword [ebp - 0x34]
call fcn.0065b294
lea edx, [ebp - 0xa0]
call fcn.0065da64
mov edx, dword [ebp - 0xa0]
lea eax, [ebp - 0x14]
mov ecx, 0x500ca4
call fcn.00403568
jmp 0x4fff70
lea edx, [ebp - 0x14]
mov eax, dword [ebp - 0x34]
call fcn.0065da64
mov eax, dword [ebp - 0x50]
cmp dword [eax + 0x814], 0
jne 0x4fff91
mov eax, dword [ebp - 0x54]
mov edx, dword [eax]
mov eax, dword [ebp - 0x50]
call fcn.005644f8
mov eax, dword [eax + 8]
mov dword [ebp - 0x38], eax
jmp 0x4fffb1
mov eax, dword [ebp - 0x54]
mov eax, dword [eax + 8]
mov edx, dword [ebp - 0x50]
mov edx, dword [edx + 0x134]
mov edx, dword [edx + 0x1c]
mov eax, dword [edx + eax*4]
call fcn.0055dc48
mov eax, dword [eax + 8]
mov dword [ebp - 0x38], eax
lea eax, [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x54]
mov eax, dword [eax + 8]
inc eax
mov dword [ebp - 0xc0], eax
mov byte [ebp - 0xbc], 0
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0xb8], eax
mov byte [ebp - 0xb4], 0xb
mov eax, dword [ebp - 0x38]
inc eax
mov dword [ebp - 0xb0], eax
mov byte [ebp - 0xac], 0
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x4cc]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0xa8], eax
mov byte [ebp - 0xa4], 0
lea edx, [ebp - 0xc0]
mov eax, 0x500ca8
mov ecx, 3
call fcn.0065d7d4
jmp case.0x4ffe15.4
mov eax, dword [ebp - 0x54]
mov eax, dword [eax]
mov edx, dword [ebp - 0x50]
mov edx, dword [edx + 0xa8]
mov edx, dword [edx + 0x1c]
mov eax, dword [edx + eax*4]
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x54]
mov eax, dword [eax + 0xc]
mov edx, dword [ebp - 0x58]
mov edx, dword [edx + 0x10]
mov edx, dword [edx + 0x1c]
mov eax, dword [edx + eax*4]
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x50]
mov al, byte [eax + 0x146]
dec eax
sub al, 2
jae 0x5000ff
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x34]
mov edx, dword [ebp - 0x58]
mov edx, dword [edx + 0x10]
mov edx, dword [edx + 0x1c]
mov edx, dword [edx + eax*4]
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x30]
call fcn.0055ddec
inc eax
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x30]
mov edi, dword [eax + 0x8c]
dec edi
cmp edi, 0
jl 0x5000b7
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x134]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax + edi*4]
mov dl, byte [0x500cc0]
call fcn.0055dd50
add dword [ebp - 0x3c], eax
dec edi
cmp edi, 0xffffffff
jne 0x500094
lea eax, [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x9c], eax
mov byte [ebp - 0x98], 0
mov eax, dword [ebp - 0x54]
mov eax, dword [eax + 4]
mov edx, dword [ebp - 0x5c]
sub eax, dword [edx + 0x28]
inc eax
mov dword [ebp - 0x94], eax
mov byte [ebp - 0x90], 0
lea edx, [ebp - 0x9c]
mov eax, 0x500cc4
mov ecx, 1
call fcn.0065d7d4
jmp case.0x4ffe15.4
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x24]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x30]
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3c]
add dword [ebp - 0x40], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2c]
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
cmp dword [eax + 0x2c], 0
jne 0x500111
lea eax, [ebp - 0x10]
push eax
lea edx, [ebp - 0xa0]
mov eax, dword [ebp - 0x40]
call fcn.00631860
mov eax, dword [ebp - 0xa0]
mov dword [ebp - 0xd8], eax
mov byte [ebp - 0xd4], 0xb
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x34]
mov edx, dword [ebp - 0x58]
mov edx, dword [edx + 0x10]
mov edx, dword [edx + 0x1c]
mov edx, dword [edx + eax*4]
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x30]
call fcn.0055ddec
inc eax
mov dword [ebp - 0xd0], eax
mov byte [ebp - 0xcc], 0
mov eax, dword [ebp - 0x54]
mov eax, dword [eax + 4]
mov edx, dword [ebp - 0x5c]
sub eax, dword [edx + 0x28]
inc eax
mov dword [ebp - 0xc8], eax
mov byte [ebp - 0xc4], 0
lea edx, [ebp - 0xd8]
mov eax, 0x500cd8
mov ecx, 2
call fcn.0065d7d4
jmp case.0x4ffe15.4
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0x38], 0
je case.0x4ffe15.4
lea eax, [ebp - 0x10]
mov edx, 0x500cf8
call fcn.0040330c
jmp case.0x4ffe15.4
lea eax, [ebp - 0x10]
mov edx, dword [ebp + 8]
mov edx, dword [edx - 4]
movzx edx, byte [edx + 0x291]
mov ecx, dword [0x67260c]
mov edx, dword [ecx + edx*4]
call fcn.00403438
jmp case.0x4ffe15.4
mov eax, dword [ebp - 0x50]
cmp dword [eax + 0x39c], 0x80000000
je case.0x4ffe15.4
call fcn.00633e28
lea ecx, [ebp - 0x10]
mov edx, dword [ebp - 0x50]
mov edx, dword [edx + 0x39c]
call fcn.0062fb9c
jmp case.0x4ffe15.4
mov eax, dword [0x672428]
mov ax, word [eax + 0xb5]
mov edx, dword [ebp + 8]
mov edx, dword [edx - 4]
mov word [edx + 0x2f8], ax
mov eax, dword [ebp - 0x50]
mov al, byte [eax + 0x145]
mov edx, dword [ebp + 8]
mov edx, dword [edx - 4]
mov byte [edx + 0x2fa], al
mov eax, dword [ebp - 0x50]
mov al, byte [eax + 0x7d4]
mov edx, dword [ebp + 8]
mov edx, dword [edx - 4]
mov byte [edx + 0x2fb], al
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
mov eax, dword [eax + 0x2f4]
mov edx, dword [ebp + 8]
mov edx, dword [edx - 4]
mov dword [edx + 0x2fc], eax
jmp case.0x4ffe15.4
lea edx, [ebp - 0xa0]
mov eax, dword [ebp - 0x24]
call fcn.006233b0
mov edx, dword [ebp - 0xa0]
lea ecx, [ebp - 0x10]
mov eax, 0x500d04
call fcn.0065d910
jmp case.0x4ffe15.4
lea edx, [ebp - 0xa0]
mov eax, dword [ebp - 0x28]
call fcn.006233b0
mov edx, dword [ebp - 0xa0]
lea ecx, [ebp - 0x10]
mov eax, 0x500d04
call fcn.0065d910
jmp case.0x4ffe15.4
lea edx, [ebp - 0xa0]
mov eax, dword [ebp - 0x2c]
call fcn.006233b0
mov edx, dword [ebp - 0xa0]
lea ecx, [ebp - 0x10]
mov eax, 0x500d10
call fcn.0065d910
jmp case.0x4ffe15.4
call fcn.00656a20
mov dword [ebp - 8], eax
call fcn.005397ec
mov eax, dword [eax + 0x10]
cmp dword [eax + 0x18], 1
jle 0x50031d
call fcn.005397ec
mov edx, dword [eax + 0x10]
mov eax, dword [ebp - 8]
call fcn.00656bec
jmp 0x50032c
call fcn.005397f4
mov edx, eax
mov eax, dword [ebp - 8]
call fcn.00656c78
mov dword [ebp - 0x30], 0xffffffff
mov eax, dword [ebp - 8]
mov edi, dword [eax + 0x18]
dec edi
cmp edi, 0
jl 0x50038c
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x1c]
mov esi, dword [eax + edi*4]
cmp byte [esi + 0x422], 0
jne 0x500386
cmp byte [esi + 0x439], 0
jne 0x500386
cmp byte [esi + 0x421], 0
jne 0x500386
cmp dword [esi + 0x15c], 0
je 0x500386
cmp dword [ebp - 0x30], 0
jge 0x500375
inc dword [ebp - 0x30]
push 0
mov eax, dword [esi + 0x15c]
push eax
call sub.kernel32.dll_GetFileSize
add dword [ebp - 0x30], eax
dec edi
cmp edi, 0xffffffff
jne 0x50033f
cmp dword [ebp - 0x30], 0
jl 0x5003b3
lea edx, [ebp - 0xa0]
mov eax, dword [ebp - 0x30]
call fcn.006233b0
mov edx, dword [ebp - 0xa0]
lea ecx, [ebp - 0x10]
mov eax, 0x500d1c
call fcn.0065d910
mov eax, dword [ebp - 8]
call fcn.00656ff0
jmp case.0x4ffe15.4
lea eax, [ebp - 0x10]
push eax
fld xword [0x500d28]
mov eax, dword [ebp - 0x50]
fmul qword [eax + 0x8bc]
call fcn.00402590
mov dword [ebp - 0xd8], eax
mov byte [ebp - 0xd4], 0
fld xword [0x500d28]
mov eax, dword [ebp - 0x50]
fmul qword [eax + 0x8bc]
call fcn.00402554
fmul dword [0x500d34]
mov eax, dword [ebp - 0x50]
fsubr qword [eax + 0x8bc]
fld xword [0x500d38]
fmulp st(1)
call fcn.00402590
mov dword [ebp - 0xd0], eax
mov byte [ebp - 0xcc], 0
fld xword [0x500d38]
mov eax, dword [ebp - 0x50]
fmul qword [eax + 0x8bc]
call fcn.00402554
fmul dword [0x500d44]
mov eax, dword [ebp - 0x50]
fsubr qword [eax + 0x8bc]
fld xword [0x500d48]
fmulp st(1)
call fcn.00402590
mov dword [ebp - 0xc8], eax
mov byte [ebp - 0xc4], 0
lea edx, [ebp - 0xd8]
mov eax, 0x500d54
mov ecx, 2
call fcn.0065d7d4
jmp case.0x4ffe15.4
mov eax, dword [ebp - 0x50]
cmp dword [eax + 0x8c4], 0
jle case.0x4ffe15.4
mov eax, dword [ebp - 0x50]
fld qword [eax + 0x8bc]
fcomp dword [0x500d64]
fnstsw ax
sahf
jb case.0x4ffe15.4
mov eax, dword [ebp - 0x50]
fild dword [eax + 0x8c4]
call fcn.00402554
fmul dword [0x500d44]
mov eax, dword [ebp - 0x50]
fdiv qword [eax + 0x8bc]
call fcn.00402590
mov edx, eax
lea ecx, [ebp - 0x10]
mov eax, 0x500d68
call fcn.0065da0c
jmp case.0x4ffe15.4
mov eax, dword [ebp - 0x50]
cmp dword [eax + 0x8cc], 0
jle case.0x4ffe15.4
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0x8d8], 2
jne 0x5004fd
mov eax, 0x500d78
mov dword [ebp - 0xc], eax
jmp 0x500505
mov eax, 0x500d90
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x8d4]
call fcn.0065b29c
mov edi, eax
cmp edi, 0x7fffffff
jne 0x500526
mov eax, dword [ebp - 0x50]
mov edi, dword [eax + 0x8cc]
lea eax, [ebp - 0x10]
push eax
mov dword [ebp - 0x9c], edi
mov byte [ebp - 0x98], 0
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x8cc]
mov dword [ebp - 0x94], eax
mov byte [ebp - 0x90], 0
lea edx, [ebp - 0x9c]
mov ecx, 1
mov eax, dword [ebp - 0xc]
call fcn.0065d7d4
jmp case.0x4ffe15.4
lea ecx, [ebp - 0x10]
mov eax, dword [ebp - 0x50]
mov edx, dword [eax + 0x140]
mov eax, 0x500da8
call fcn.0065da0c
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
mov esi, dword [eax + 0x268]
xor eax, eax
mov al, bl
lea eax, [eax + eax*2]
lea edi, [esi + eax*4 + 0x158]
mov eax, edi
mov edx, dword [ebp - 0x10]
call fcn.004032c8
cmp dword [ebp - 0x10], 0
je 0x5005dc
lea edx, [ebp - 0xdc]
mov eax, dword [ebp - 0x10]
call fcn.0065c958
mov edx, dword [ebp - 0xdc]
mov eax, dword [esi + 0x120]
call fcn.0064f04c
mov dword [edi + 4], eax
mov edx, dword [edi + 4]
mov eax, dword [esi + 0x124]
add eax, eax
add edx, eax
mov eax, dword [edi + 8]
call fcn.0065b294
mov dword [edi + 8], eax
dec ebx
cmp bl, 0xff
jne 0x4ffdcd
jmp 0x50060f
xor ebx, ebx
xor eax, eax
mov al, bl
lea eax, [eax + eax*2]
mov edx, dword [ebp + 8]
mov edx, dword [edx - 4]
mov edx, dword [edx + 0x268]
lea eax, [edx + eax*4 + 0x158]
call fcn.00403274
inc ebx
cmp bl, 0x13
jne 0x5005ea
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
mov esi, dword [eax + 0x268]
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
add eax, 0x1c4
call fcn.00403274
call fcn.005397f4
test eax, eax
je 0x500880
call fcn.005397f4
mov ebx, eax
cmp dword [ebx + 0x950], 0xfffffffe
jne 0x500656
mov eax, dword [ebx + 0x964]
call fcn.00548140
dec eax
jg 0x500670
cmp dword [ebx + 0x950], 0
jl 0x500880
cmp dword [ebx + 0x960], 2
jle 0x500880
mov eax, ebx
call fcn.006013f4
test al, al
jne 0x500880
cmp dword [ebx + 0x950], 0
jl 0x5006d1
push 0x500db8
lea eax, [ebp - 0xa0]
mov edx, dword [ebx + 0x960]
and edx, 0x80000003
jns 0x5006a6
dec edx
or edx, 0xfffffffc
inc edx
mov edx, dword [edx*4 + 0x66c384]
call fcn.00403438
push dword [ebp - 0xa0]
push 0x500dc8
push 0x500dc8
lea eax, [ebp - 0x18]
mov edx, 4
call fcn.004035dc
jmp 0x5006d9
lea eax, [ebp - 0x18]
call fcn.00403274
mov eax, dword [ebx + 0x964]
call fcn.00548140
mov edi, eax
cmp edi, 1
jg 0x500732
cmp dword [ebx + 0x814], 0
jne 0x5006fe
mov eax, 0x500dcc
mov dword [ebp - 0xc], eax
jmp 0x500706
mov eax, 0x500e08
mov dword [ebp - 0xc], eax
lea ecx, [ebp - 0xa0]
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 0xc]
call fcn.0065d910
mov edx, dword [ebp - 0xa0]
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
add eax, 0x1c4
call fcn.004032c8
jmp 0x500818
cmp dword [ebx + 0x814], 0
jne 0x500752
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
add eax, 0x1c4
mov edx, 0x500e58
call fcn.004032c8
jmp 0x500767
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
add eax, 0x1c4
mov edx, 0x500ea4
call fcn.004032c8
cmp dword [ebx + 0x950], 0xfffffffe
jne 0x50078f
lea ecx, [ebp - 0x1c]
mov eax, 0x500ef4
mov edx, 1
call fcn.0065da0c
lea eax, [ebp - 0x20]
mov edx, 0x500f04
call fcn.0040330c
lea eax, [ebp - 0xa0]
push eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0xc0], eax
mov byte [ebp - 0xbc], 0xb
lea edx, [ebp - 0xe0]
mov eax, edi
call fcn.006233b0
mov eax, dword [ebp - 0xe0]
mov dword [ebp - 0xb8], eax
mov byte [ebp - 0xb4], 0xb
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0xb0], eax
mov byte [ebp - 0xac], 0xb
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0xa8], eax
mov byte [ebp - 0xa4], 0xb
lea edx, [ebp - 0xc0]
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
mov eax, dword [eax + 0x1c4]
mov ecx, 3
call fcn.0065d7d4
mov edx, dword [ebp - 0xa0]
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
add eax, 0x1c4
call fcn.004032c8
lea eax, [ebp - 0xa0]
push eax
mov dword [ebp - 0xd8], 2
mov byte [ebp - 0xd4], 0
mov dword [ebp - 0xd0], 3
mov byte [ebp - 0xcc], 0
mov dword [ebp - 0xc8], 4
mov byte [ebp - 0xc4], 0
lea edx, [ebp - 0xd8]
mov eax, 0x500f08
mov ecx, 2
call fcn.0065d7d4
mov edx, dword [ebp - 0xa0]
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
add eax, 0x1c4
call fcn.00403524
mov eax, dword [ebp + 8]
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
cmp dword [eax + 0x1c4], 0
jne 0x5008b1
mov eax, dword [esi + 0x144]
test eax, eax
je 0x500c2a
cmp byte [eax + 0x3a], 0
je 0x500c2a
call fcn.00646a88
jmp 0x500c2a
cmp dword [esi + 0x144], 0
jne 0x50098b
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
mov ecx, dword [eax + 0x268]
mov dl, 1
mov eax, dword [0x4f6b54]
call fcn.0064aecc
mov ebx, eax
mov dword [esi + 0x144], ebx
mov byte [ebx + 0x114], 1
mov eax, ebx
call fcn.00646a88
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
mov edx, dword [eax + 0x268]
mov eax, dword [esi + 0x144]
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov ecx, dword [esi + 0x144]
mov dl, 1
mov eax, dword [0x61b1e8]
call fcn.0061cd80
mov ebx, eax
mov dword [esi + 0x148], ebx
mov dword [ebx + 0x180], 1
mov byte [ebx + 0x171], 0
mov dword [ebx + 0x15c], 0xc0ffff
mov edx, dword [esi + 0x144]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [esi + 0x148]
mov dword [eax + 0x188], esi
mov dword [eax + 0x184], 0x4f89a8
mov dword [eax + 0x190], esi
mov dword [eax + 0x18c], 0x4f8a6c
mov dword [eax + 0x1a0], esi
mov dword [eax + 0x19c], 0x4f8a74
mov dword [eax + 0x1a8], esi
mov dword [eax + 0x1a4], 0x4f8bb4
mov eax, dword [esi + 0x148]
mov byte [eax + 0x17c], 1
lea edx, [ebp - 0xdc]
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
mov eax, dword [eax + 0x1c4]
call fcn.0065c958
mov edx, dword [ebp - 0xdc]
mov eax, dword [esi + 0x148]
add eax, 0x144
call fcn.004038bc
mov eax, 0x80
call fcn.00652900
mov dword [ebp - 0x44], eax
xor ecx, ecx
mov edx, dword [ebp - 0x44]
mov eax, dword [esi + 0x148]
call fcn.0061cf4c
mov eax, dword [esi + 0x148]
mov eax, dword [eax + 0x150]
cmp dword [eax + 0x18], 1
je 0x500a02
mov eax, dword [0x6724c0]
mov eax, dword [eax]
add eax, eax
add dword [ebp - 0x44], eax
jmp 0x5009d2
mov eax, dword [0x6724c0]
mov eax, dword [eax]
add dword [ebp - 0x44], eax
cmp dword [esi + 0x28], 0
setg al
and eax, 0x7f
mov edx, dword [0x67238c]
imul dword [edx]
mov dword [ebp - 0x48], eax
lea edx, [ebp - 0x9c]
mov eax, esi
call fcn.00646394
mov ebx, dword [ebp - 0x94]
mov eax, dword [esi + 0x1c]
call fcn.006463f0
cmp ebx, eax
setl al
and eax, 0x7f
mov edx, dword [0x67238c]
imul dword [edx]
mov edi, dword [esi + 0x30]
sub edi, eax
mov eax, esi
call fcn.004f76a8
xor ebx, ebx
mov eax, dword [0x672428]
mov edx, dword [esi + 0x140]
not edx
and edx, dword [eax + 0x15a]
mov eax, ebx
cmp al, 0x1f
ja 0x500a79
and eax, 0x7f
bt edx, eax
jae 0x500a99
lea ecx, [ebp - 0x6c]
mov edx, ebx
mov eax, esi
call fcn.004f7790
cmp bl, 0xe
jae 0x500a94
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x48], eax
jmp 0x500a99
mov edi, dword [ebp - 0x6c]
jmp 0x500a9f
inc ebx
cmp bl, 0x13
jne 0x500a5a
mov eax, edi
sub eax, dword [ebp - 0x48]
cmp eax, dword [ebp - 0x44]
jge 0x500b9f
mov bl, 0x12
mov eax, dword [0x672428]
mov edx, dword [esi + 0x140]
not edx
and edx, dword [eax + 0x15a]
mov eax, ebx
cmp al, 0x1f
ja 0x500ace
and eax, 0x7f
bt edx, eax
jae 0x500aec
lea ecx, [ebp - 0x7c]
mov edx, ebx
mov eax, esi
call fcn.004f7790
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x48], eax
mov eax, edi
sub eax, dword [ebp - 0x48]
cmp eax, dword [ebp - 0x44]
jge 0x500af2
dec ebx
cmp bl, 0xff
jne 0x500aaf
mov eax, edi
sub eax, dword [ebp - 0x48]
cmp eax, dword [ebp - 0x44]
jge 0x500b4a
mov bl, 0xe
mov eax, dword [0x672428]
mov edx, dword [esi + 0x140]
not edx
and edx, dword [eax + 0x15a]
mov eax, ebx
cmp al, 0x1f
ja 0x500b1d
and eax, 0x7f
bt edx, eax
jae 0x500b44
lea ecx, [ebp - 0x8c]
mov edx, ebx
mov eax, esi
call fcn.004f7790
mov eax, dword [ebp - 0x8c]
sub eax, dword [ebp - 0x48]
cmp eax, dword [ebp - 0x44]
jl 0x500b44
mov edi, dword [ebp - 0x8c]
jmp 0x500b4a
inc ebx
cmp bl, 0x13
jne 0x500afe
mov eax, edi
sub eax, dword [ebp - 0x48]
cmp eax, dword [ebp - 0x44]
jge 0x500b99
cmp dword [esi + 0x28], 0
setg al
and eax, 0x7f
mov edx, dword [0x67238c]
imul dword [edx]
mov dword [ebp - 0x48], eax
lea edx, [ebp - 0x9c]
mov eax, esi
call fcn.00646394
mov ebx, dword [ebp - 0x94]
mov eax, dword [esi + 0x1c]
call fcn.006463f0
cmp ebx, eax
setl al
and eax, 0x7f
mov edx, dword [0x67238c]
imul dword [edx]
mov edi, dword [esi + 0x30]
sub edi, eax
sub edi, dword [ebp - 0x48]
mov dword [ebp - 0x44], edi
mov eax, dword [0x6724c0]
mov edx, dword [ebp - 0x44]
sub edx, dword [eax]
push edx
mov eax, dword [0x6724c0]
mov edx, dword [esi + 0x34]
sub edx, dword [eax]
push edx
mov ecx, dword [0x67238c]
mov ecx, dword [ecx]
mov edx, dword [0x67238c]
mov edx, dword [edx]
mov eax, dword [esi + 0x148]
mov ebx, dword [eax]
call dword [ebx + 0x3c]
mov ebx, dword [esi + 0x148]
mov eax, ebx
call fcn.0061ce70
mov edx, dword [ebx + 0x34]
sub edx, eax
sar edx, 1
jns 0x500be9
adc edx, 0
mov edi, dword [esi + 0x148]
mov dword [edi + 0x148], edx
mov byte [edi + 0x17c], 0
mov eax, dword [ebp - 0x44]
push eax
mov eax, dword [esi + 0x34]
push eax
xor ecx, ecx
mov edx, dword [ebp - 0x48]
mov eax, dword [esi + 0x144]
mov ebx, dword [eax]
call dword [ebx + 0x3c]
mov eax, dword [esi + 0x144]
mov edx, dword [eax]
call dword [edx + 0x34]
mov eax, dword [esi + 0x144]
call fcn.00646a90
mov eax, esi
mov edx, dword [eax]
call dword [edx + 0x34]
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
mov eax, dword [eax + 0x268]
mov dl, byte [ebp - 0x49]
call fcn.00646614
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x500c88
lea eax, [ebp - 0xe0]
call fcn.00403274
lea eax, [ebp - 0xdc]
call fcn.00403880
lea eax, [ebp - 0xa0]
call fcn.00403274
lea eax, [ebp - 0x20]
mov edx, 5
call fcn.00403298
ret