Function at 0x497090
Capabilities:
Check for software breakpoints
Check os version
Get number of processors

Disassembly:
push 0xffffffffffffffff
push 0x4dbec1
mov eax, dword fs:[0]
push eax
mov eax, 0x2840
mov dword fs:[0], esp
call fcn.004d5830
push ebx
mov ebx, dword [esp + 0x2898]
mov eax, ebx
imul eax, dword [esp + 0x2894]
push ebp
xor ecx, ecx
push esi
mov esi, dword [esp + 0x2878]
push edi
mov byte [esp + 0x15], cl
mov dword [esp + 0x30], eax
mov dword [esp + 0x80], ecx
mov dword [esp + 0x84], ecx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x2858], ecx
mov edi, 0x64
mov dword [esp + 0x54], ecx
push 0x320
mov dword [esp + 0x54], ecx
mov dword [esp + 0x58], 5
mov dword [esp + 0x9c], edi
mov dword [esp + 0xa0], edi
call fcn.004c9c38
mov ebp, eax
add esp, 4
mov dword [esp + 0x94], ebp
mov dword [esp + 0xa0], 0xffffffff
mov byte [esp + 0x2858], 1
test esi, esi
jns 0x49714e
mov dword [esp + 0x287c], 0
jmp 0x497159
cmp esi, edi
jle 0x497159
mov dword [esp + 0x287c], edi
cmp dword [esp + 0x286c], 0
je 0x497dac
cmp dword [esp + 0x2868], 0
je 0x497dac
cmp dword [esp + 0x2860], 0
je 0x497dac
cmp dword [esp + 0x2864], 0
je 0x497dac
mov edi, dword [esp + 0x30]
push edi
call fcn.004c9c38
add esp, 4
mov dword [esp + 0x20], eax
test eax, eax
je 0x497dac
mov ebp, dword [esp + 0x2880]
cmp ebp, 0xffffffff
jne 0x497204
cmp byte [esp + 0x2894], 0
jne 0x497204
or ecx, ebp
or esi, ebp
xor edx, edx
test edi, edi
jle 0x497202
lea ebx, [ebx]
mov eax, dword [esp + 0x286c]
mov eax, dword [eax + edx*4]
and eax, 0xffffff
cmp ecx, 0xffffffff
jne 0x4971e8
mov ecx, eax
jmp 0x4971fd
cmp esi, 0xffffffff
jne 0x4971f5
cmp ecx, eax
je 0x4971fd
mov esi, eax
jmp 0x4971fd
cmp ecx, eax
je 0x4971fd
cmp esi, eax
jne 0x497204
inc edx
cmp edx, edi
jl 0x4971d0
mov ebp, ecx
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x28a0]
push 0
lea ecx, [esp + 0x20]
push ecx
mov ecx, dword [esp + 0x2874]
push edx
push ebx
push eax
push ebp
push ecx
lea ecx, [esp + 0x2894]
lea eax, [esp + 0x2890]
call fcn.00418010
add esp, 0x1c
test al, al
je 0x497d98
cmp byte [esp + 0x2894], 0
je 0x497322
mov ebx, dword [esp + 0x28a0]
mov eax, dword [esp + 0x28a4]
mov edx, dword [esp + 0x20]
dec ebx
xor edi, edi
mov byte [esp + 0x16], 0xcc
lea ebp, [eax - 1]
test eax, eax
jle 0x4972e0
xor esi, esi
cmp dword [esp + 0x28a0], esi
jle 0x4972d6
test esi, esi
je 0x49728a
test edi, edi
je 0x49728a
cmp esi, ebx
je 0x49728a
cmp edi, ebp
jne 0x4972cc
mov eax, edi
imul eax, dword [esp + 0x28a0]
add eax, esi
cmp byte [eax + edx], 0xcc
je 0x4972cc
push 0
push 0
lea ecx, [esp + 0x1e]
push ecx
push edi
lea eax, [esp + 0x28b0]
push eax
push edx
lea eax, [esp + 0xac]
mov ecx, esi
call fcn.004193f0
add esp, 0x18
test al, al
je 0x497d98
mov edx, dword [esp + 0x20]
inc esi
cmp esi, dword [esp + 0x28a0]
jl 0x49727a
inc edi
cmp edi, dword [esp + 0x28a4]
jl 0x49726f
mov esi, dword [esp + 0x30]
xor ecx, ecx
test esi, esi
jle 0x497303
lea ebx, [ebx]
mov al, byte [ecx + edx]
cmp al, 0xcc
je 0x4972fe
test al, al
sete byte [esp + 0x1c]
inc ecx
cmp ecx, esi
jl 0x4972f0
xor eax, eax
test esi, esi
jle 0x497322
mov ecx, dword [esp + 0x20]
lea ecx, [ecx]
cmp byte [eax + ecx], 0xcc
jne 0x49731d
mov dl, byte [esp + 0x1c]
mov byte [eax + ecx], dl
inc eax
cmp eax, esi
jl 0x497310
cmp dword [esp + 0x2884], 0
jle 0x497424
xor ebp, ebp
or eax, 0xffffffff
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], ebp
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], ebp
cmp dword [esp + 0x28a0], ebp
jle 0x497424
or edx, 0xffffffff
xor eax, eax
mov edi, edx
mov ecx, edx
cmp dword [esp + 0x28a4], eax
jle 0x49739a
mov esi, dword [esp + 0x20]
add esi, ebp
mov bl, byte [esp + 0x1c]
cmp byte [esi], bl
je 0x49737b
cmp edi, 0xffffffff
jne 0x497379
mov edi, eax
mov ecx, eax
add esi, dword [esp + 0x28a0]
inc eax
cmp eax, dword [esp + 0x28a4]
jl 0x49736a
or edx, 0xffffffff
cmp edi, edx
je 0x49739a
sub ecx, edi
inc ecx
mov esi, ecx
jne 0x4973a0
mov dword [esp + 0x2c], edx
jmp 0x497416
cmp dword [esp + 0x2c], edx
jne 0x4973b8
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x28], 1
mov dword [esp + 0x24], edx
jmp 0x497416
mov eax, dword [esp + 0x28]
inc eax
mov dword [esp + 0x28], eax
cmp eax, dword [esp + 0x2884]
jl 0x497416
cmp dword [esp + 0x24], edx
jne 0x4973d6
mov dword [esp + 0x24], ebp
jmp 0x497412
cmp esi, dword [esp + 0x18]
jle 0x497410
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x28a4]
mov ecx, dword [esp + 0x28a0]
add eax, ebp
dec eax
mov byte [eax], bl
add eax, ecx
dec edx
jne 0x4973f1
cmp esi, dword [esp + 0x18]
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x28], 1
mov dword [esp + 0x24], 0xffffffff
jge 0x497416
mov dword [esp + 0x18], esi
inc ebp
cmp ebp, dword [esp + 0x28a0]
jl 0x497352
mov eax, dword [esp + 0x2870]
xor edi, edi
cmp dword [eax], edi
jg 0x497444
cmp dword [eax + 4], edi
jg 0x497444
cmp dword [eax + 8], edi
jg 0x497444
cmp dword [eax + 0xc], edi
jle 0x4976dc
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov esi, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], eax
mov ebx, SysReAllocString
cmp ecx, edi
jne 0x49746c
mov dword [esp + 0x38], ebx
cmp edx, edi
jne 0x497474
mov dword [esp + 0x3c], ebx
mov ecx, SysReAllocString
cmp esi, edi
jne 0x497481
mov dword [esp + 0x40], ecx
cmp eax, edi
jne 0x497489
mov dword [esp + 0x44], ecx
mov cl, byte [esp + 0x1c]
test cl, cl
sete al
or cl, 0xf0
mov byte [esp + 0x37], cl
mov cl, al
mov byte [esp + 0x17], al
or cl, 0xe0
or al, 0xd0
mov byte [esp + 0x16], cl
mov byte [esp + 0x36], al
mov dword [esp + 0x28], edi
cmp dword [esp + 0x28a4], edi
jle 0x497623
xor esi, esi
mov dword [esp + 0x2c], esi
cmp dword [esp + 0x28a0], esi
jle 0x49760d
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
mov eax, ecx
imul eax, dword [esp + 0x28a0]
add eax, esi
mov al, byte [eax + edx]
test al, 0xf0
jne 0x4975fb
cmp al, byte [esp + 0x17]
jne 0x4975fb
lea eax, [esp + 0x58]
push eax
mov eax, dword [esp + 0x28a0]
push eax
lea eax, [esp + 0x1e]
push eax
push ecx
lea ecx, [esp + 0x28b0]
push ecx
push edx
lea eax, [esp + 0xac]
mov ecx, esi
call fcn.004193f0
add esp, 0x18
test al, al
je 0x497d98
cmp byte [esp + 0x58], 0
je 0x4975fb
mov edx, dword [esp + 0x68]
mov ebx, dword [esp + 0x64]
mov eax, dword [esp + 0x60]
mov edi, dword [esp + 0x2870]
sub ebx, dword [esp + 0x5c]
mov ecx, edx
sub ecx, eax
cmp byte [edi + 0x12], 0
je 0x497645
cmp byte [edi + 0x10], 0
je 0x497579
cmp ebx, dword [esp + 0x38]
jl 0x49768f
cmp ecx, dword [esp + 0x3c]
jge 0x497589
jmp 0x49768f
cmp ebx, dword [esp + 0x38]
jge 0x497589
cmp ecx, dword [esp + 0x3c]
jl 0x49768f
cmp byte [edi + 0x11], 0
lea edi, [ebx + 1]
je 0x4975a1
cmp edi, dword [esp + 0x40]
jge 0x49768f
jmp 0x497682
cmp edi, dword [esp + 0x40]
jl 0x4975b4
lea edi, [ecx + 1]
cmp edi, dword [esp + 0x44]
jge 0x49768f
cmp eax, edx
jg 0x4975fb
mov edi, dword [esp + 0x28a0]
imul eax, edi
add eax, dword [esp + 0x5c]
lea ebp, [ecx + 1]
add eax, dword [esp + 0x20]
mov esi, eax
nop
mov ecx, dword [esp + 0x64]
cmp dword [esp + 0x5c], ecx
jg 0x4975f2
mov ecx, esi
lea edx, [ebx + 1]
nop
mov al, byte [esp + 0x16]
cmp byte [ecx], al
jne 0x4975ee
mov al, byte [esp + 0x36]
mov byte [ecx], al
inc ecx
dec edx
jne 0x4975e0
add esi, edi
dec ebp
jne 0x4975d0
mov esi, dword [esp + 0x2c]
inc esi
mov dword [esp + 0x2c], esi
cmp esi, dword [esp + 0x28a0]
jl 0x4974d0
mov eax, dword [esp + 0x28]
inc eax
mov dword [esp + 0x28], eax
cmp eax, dword [esp + 0x28a4]
jl 0x4974bd
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x20]
xor edi, edi
xor eax, eax
cmp ecx, edi
jle 0x4976e4
and byte [eax + esi], 0xf
inc eax
cmp eax, ecx
jl 0x497637
jmp 0x4976e4
cmp byte [edi + 0x10], 0
je 0x497653
cmp ebx, dword [esp + 0x38]
jl 0x497667
jmp 0x49765d
cmp ebx, dword [esp + 0x38]
jge 0x4975b4
cmp ecx, dword [esp + 0x3c]
jge 0x4975b4
cmp byte [edi + 0x11], 0
lea edi, [ebx + 1]
je 0x497678
cmp edi, dword [esp + 0x40]
jge 0x49768f
jmp 0x497682
cmp edi, dword [esp + 0x40]
jl 0x4975b4
lea edi, [ecx + 1]
cmp edi, dword [esp + 0x44]
jl 0x4975b4
cmp eax, edx
jg 0x4975fb
mov edi, dword [esp + 0x28a0]
imul eax, edi
add eax, dword [esp + 0x5c]
lea ebp, [ecx + 1]
add eax, dword [esp + 0x20]
mov esi, eax
mov edi, edi
mov edx, dword [esp + 0x64]
cmp dword [esp + 0x5c], edx
jg 0x4976d2
mov ecx, esi
lea edx, [ebx + 1]
nop
mov al, byte [esp + 0x16]
cmp byte [ecx], al
jne 0x4976ce
mov al, byte [esp + 0x37]
mov byte [ecx], al
inc ecx
dec edx
jne 0x4976c0
add esi, edi
dec ebp
jne 0x4976b0
jmp 0x4975f7
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x20]
cmp byte [esp + 0x1c], 0
jne 0x49770a
xor eax, eax
mov byte [esp + 0x1c], 1
cmp ecx, edi
jle 0x497705
cmp byte [eax + esi], 0
sete dl
mov byte [eax + esi], dl
inc eax
cmp eax, ecx
jl 0x4976f6
cmp byte [esp + 0x1c], 0
sete byte [esp + 0x17]
cmp byte [esp + 0x288c], 0
je 0x49773c
xor eax, eax
cmp ecx, edi
jle 0x49773c
mov edx, dword [esp + 0x286c]
movzx ebx, byte [eax + esi]
neg ebx
sbb ebx, ebx
and ebx, 0xffffff
mov dword [edx + eax*4], ebx
inc eax
cmp eax, ecx
jl 0x497726
mov eax, dword [esp + 0x28a4]
mov ecx, dword [esp + 0x28a0]
push eax
push ecx
mov ecx, dword [esp + 0x24]
lea edx, [esp + 0x58]
push edx
lea eax, [esp + 0x8c]
push eax
push ecx
push esi
call fcn.00418e40
add esp, 0x18
test al, al
je 0x497d98
mov esi, dword [esp + 0x2860]
mov eax, dword [esi + 4]
cmp eax, edi
je 0x49778a
mov edx, dword [esi]
push edx
push edi
push eax
call fcn.004d2f90
add esp, 0xc
mov eax, dword [esi + 4]
push 0x190
push eax
mov dword [esi], 0xc8
call fcn.004caea7
add esp, 8
cmp eax, edi
jne 0x4977b8
mov ecx, dword [esi + 4]
push ecx
call fcn.004ca991
add esp, 4
mov dword [esi + 4], edi
mov dword [esi], edi
jmp 0x4977c3
xor edx, edx
mov dword [esi + 4], eax
mov dword [esi + 8], edi
mov word [eax], dx
mov esi, dword [esp + 0x2864]
mov eax, dword [esi + 4]
cmp eax, edi
je 0x4977de
mov ecx, dword [esi]
push ecx
push edi
push eax
call fcn.004d2f90
add esp, 0xc
mov edx, dword [esi + 4]
push 0x1000
push edx
mov dword [esi], 0x800
call fcn.004caea7
add esp, 8
cmp eax, edi
jne 0x49780c
mov eax, dword [esi + 4]
push eax
call fcn.004ca991
add esp, 4
mov dword [esi + 4], edi
mov dword [esi], edi
jmp 0x497817
xor ecx, ecx
mov dword [esi + 4], eax
mov dword [esi + 8], edi
mov word [eax], cx
mov eax, dword [esp + 0x80]
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edi
cmp eax, edi
je 0x497d93
mov edx, dword [esp + 0x48]
mov esi, dword [edx + 4]
mov ecx, dword [esi + 0x24]
mov eax, dword [esi + 0x1c]
mov ebp, dword [esi + 0x18]
add ebp, dword [esi + 0x20]
lea edx, [eax + ecx]
mov ecx, eax
lea edi, [esi + 0x28]
mov dword [esp + 0x18], 0
mov dword [esp + 0x24], edx
cmp ecx, edx
jge 0x49788a
lea esp, [esp]
mov eax, dword [esi + 0x18]
cmp eax, ebp
jge 0x497885
mov edx, dword [esi + 0x10]
imul edx, ecx
add edx, edi
mov bl, byte [esp + 0x17]
cmp byte [edx + eax], bl
jne 0x49787c
inc dword [esp + 0x18]
inc eax
cmp eax, ebp
jl 0x49786f
mov edx, dword [esp + 0x24]
inc ecx
cmp ecx, edx
jl 0x497860
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x20]
cdq
sub eax, edx
sar eax, 1
add eax, dword [esi + 4]
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
mov eax, ecx
imul eax, dword [esi + 0x24]
fidiv dword [esp + 0x28a4]
cmp eax, dword [esp + 0x18]
jle 0x497d7e
cmp dword [esi + 0x10], 5
jl 0x497d7e
cmp dword [esi + 0x14], 5
lea ebx, [esi + 0x14]
mov dword [esp + 0x24], ebx
jl 0x497d7e
cmp byte [esp + 0x2898], 0
jne 0x497902
fld qword [0x50f8b0]
fcomp st(1)
fnstsw ax
test ah, 5
jp 0x497d7e
fcomp qword [0x50f8a8]
fnstsw ax
test ah, 5
jp 0x497d80
jmp 0x497904
fstp st(0)
cmp byte [esp + 0x2890], 0
je 0x4979ce
mov ebp, dword [esi + 0x18]
add ecx, ebp
mov dword [esp + 0x18], ecx
cmp ebp, ecx
jge 0x4979ce
mov edx, dword [esi + 0x1c]
mov ecx, dword [esi + 0x24]
lea ecx, [edx + ecx - 1]
mov byte [esp + 0x15], 0
cmp ecx, edx
jl 0x4979bf
cmp byte [esp + 0x15], 0
jne 0x497975
mov ebx, dword [esi + 0x10]
mov al, byte [esp + 0x1c]
imul ebx, ecx
add ebx, edi
cmp byte [ebx + ebp], al
je 0x4979b3
mov eax, ecx
sub eax, edx
imul eax, eax, 0x64
cdq
idiv dword [esi + 0x24]
cmp eax, 0x1e
jg 0x4979bf
test ebp, ebp
je 0x4979bf
mov dl, byte [esp + 0x1c]
cmp byte [ebx + ebp - 1], dl
jne 0x4979bf
mov byte [esp + 0x15], 1
mov eax, dword [esi + 0x10]
mov dl, byte [esp + 0x1c]
imul eax, ecx
add eax, edi
cmp byte [esp + 0x288c], 0
mov byte [eax + ebp], dl
je 0x4979b3
mov eax, dword [esi + 4]
sub eax, dword [esi + 0x1c]
mov edx, dword [esp + 0x286c]
add eax, ecx
imul eax, dword [esp + 0x28a0]
sub eax, dword [esi + 0x18]
add eax, ebp
add eax, dword [esi]
mov dword [edx + eax*4], 0xffffff
mov edx, dword [esi + 0x1c]
dec ecx
cmp ecx, edx
jge 0x49793a
inc ebp
cmp ebp, dword [esp + 0x18]
jl 0x497923
mov ebx, dword [esp + 0x24]
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x1c]
mov edx, dword [esi + 0x20]
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x8c], eax
mov eax, dword [esi + 0x24]
push 0
mov dword [esp + 0x94], ecx
mov ecx, dword [esi + 0x10]
mov dword [esp + 0x70], edx
mov edx, dword [ebx]
mov dword [esp + 0x74], eax
push ebp
lea eax, [esp + 0x80]
push eax
mov dword [esp + 0x84], ecx
mov dword [esp + 0x88], edx
push edi
lea edx, [esp + 0x7c]
lea ecx, [esp + 0x9c]
call fcn.0041a650
push 1
push ebp
lea ecx, [esp + 0x90]
push ecx
push edi
lea edx, [esp + 0x8c]
lea ecx, [esp + 0xac]
call fcn.0041a650
add esp, 0x20
cmp byte [esp + 0x288c], 0
je 0x497ab8
mov edx, dword [esi + 0x18]
mov ebp, dword [esi + 0x20]
add ebp, edx
mov dword [esp + 0x18], ebp
cmp edx, ebp
jge 0x497ab8
mov ecx, dword [esi + 0x1c]
mov eax, dword [esi + 0x24]
lea eax, [ecx + eax - 1]
cmp eax, ecx
jl 0x497aaf
mov ebx, dword [esi + 0x10]
mov ebp, dword [esi + 4]
imul ebx, eax
add ebx, edi
movzx ebx, byte [ebx + edx]
neg ebx
sbb ebx, ebx
sub ebp, ecx
mov ecx, dword [esp + 0x286c]
add ebp, eax
imul ebp, dword [esp + 0x28a0]
sub ebp, dword [esi + 0x18]
and ebx, 0xffffff
add ebp, edx
add ebp, dword [esi]
dec eax
mov dword [ecx + ebp*4], ebx
mov ecx, dword [esi + 0x1c]
cmp eax, ecx
jge 0x497a6d
mov ebp, dword [esp + 0x18]
inc edx
cmp edx, ebp
jl 0x497a62
mov ebx, dword [esp + 0x24]
cmp byte [esp + 0x2888], 0
je 0x497b8c
mov ebp, dword [esi + 0x1c]
mov dword [esp + 0x30], 0xffffffff
cmp ebp, dword [ebx]
jge 0x497b21
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x10]
cmp ecx, eax
jge 0x497b1c
lea edx, [ecx - 1]
test ecx, ecx
je 0x497b0f
cmp dword [esp + 0x30], edx
je 0x497b0f
imul eax, ebp
add eax, ecx
mov bl, byte [edi + eax]
cmp bl, byte [esp + 0x1c]
jne 0x497b0f
mov bl, byte [esp + 0x1c]
cmp byte [edi + eax - 1], bl
je 0x497b0f
mov bl, byte [esp + 0x17]
mov byte [edi + eax], bl
mov dword [esp + 0x30], ecx
mov eax, dword [esi + 0x10]
inc ecx
inc edx
cmp ecx, eax
jl 0x497ae2
mov ebx, dword [esp + 0x24]
inc ebp
cmp ebp, dword [ebx]
jl 0x497ad5
mov edx, dword [esi + 0x18]
mov dword [esp + 0x30], 0xffffffff
cmp edx, dword [esi + 0x10]
jge 0x497b8c
mov ebp, dword [esi + 0x1c]
cmp ebp, dword [ebx]
jge 0x497b86
lea eax, [ebp - 1]
mov dword [esp + 0x18], eax
test ebp, ebp
je 0x497b79
mov ecx, dword [esp + 0x18]
cmp dword [esp + 0x30], ecx
je 0x497b79
mov ecx, dword [esi + 0x10]
mov bl, byte [esp + 0x1c]
mov eax, ecx
imul eax, ebp
add eax, edx
cmp byte [edi + eax], bl
jne 0x497b79
imul ecx, dword [esp + 0x18]
add ecx, edi
mov cl, byte [ecx + edx]
cmp cl, bl
je 0x497b79
mov cl, byte [esp + 0x17]
mov byte [edi + eax], cl
mov dword [esp + 0x30], ebp
mov ebx, dword [esp + 0x24]
inc dword [esp + 0x18]
inc ebp
cmp ebp, dword [ebx]
jl 0x497b3f
inc edx
cmp edx, dword [esi + 0x10]
jl 0x497b31
mov edx, dword [esi + 0x10]
mov dword [esp + 0x18], edx
fild dword [esp + 0x18]
mov dword [esp + 0x28], 0
fld qword [0x50f858]
lea ebp, [esp + 0x13c]
fld st(0)
fdivrp st(2)
fidiv dword [ebx]
fild dword [esp + 0x28]
xor esi, esi
mov dword [esp + 0x2c], esi
fdiv st(1)
call fcn.004d8ac0
mov ebx, eax
imul ebx, dword [esp + 0x18]
fild dword [esp + 0x2c]
fdiv st(2)
call fcn.004d8ac0
add eax, ebx
mov al, byte [eax + edi]
inc esi
mov byte [ebp], al
inc ebp
mov dword [esp + 0x2c], esi
cmp esi, 0x64
jl 0x497bca
mov eax, dword [esp + 0x28]
inc eax
mov dword [esp + 0x28], eax
cmp eax, 0x64
jl 0x497bb2
mov bl, byte [esp + 0x1c]
fstp st(1)
mov eax, 0x64
fstp st(0)
mov ecx, eax
push ecx
push eax
lea ecx, [esp + 0x144]
push ecx
lea edx, [esp + 0x44]
push edx
lea eax, [esp + 0x50]
push eax
lea ecx, [esp + 0x64]
push ecx
lea edx, [esp + 0x8c]
push edx
call fcn.004192c0
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x90]
mov dword [esp + 0xcc], ecx
add ecx, dword [esp + 0x54]
add esp, 0x1c
xor ebp, ebp
push 0x80
mov dword [esp + 0xb0], eax
add eax, dword [esp + 0x44]
mov dword [esp + 0xac], ecx
lea ecx, [esp + 0xbc]
push ebp
push ecx
mov dword [esp + 0xb0], eax
mov dword [esp + 0xc0], ebp
call fcn.004d2f90
mov edx, dword [esp + 0x2888]
add esp, 0xc
lea eax, [esp + 0x94]
push eax
mov eax, dword [esp + 0x286c]
lea ecx, [esp + 0xb8]
push ecx
mov dword [esp + 0x13c], edx
lea edx, [esp + 0x144]
push edx
push eax
lea eax, [esp + 0xb4]
lea ecx, [esp + 0xbc]
mov dword [esp + 0x140], ebp
call fcn.00415d60
mov eax, dword [esp + 0xb4]
mov esi, dword [esp + 0x2860]
cdq
mov ebx, edx
mov edi, eax
push ebx
push edi
call fcn.00414560
mov eax, dword [esp + 0x4c]
mov esi, dword [esp + 0x2864]
mov ecx, eax
inc eax
mov dword [esp + 0x4c], eax
test ecx, ecx
je 0x497d01
push 1
push ebp
push 0x4ec724
call fcn.004148c0
push ebx
push edi
call fcn.00414560
push 1
push ebp
push 0x50de28
call fcn.004148c0
xor edi, edi
cmp edi, ebp
je 0x497d28
push 1
push ebp
push 0x4ec6cc
call fcn.004148c0
mov ebx, dword [esp + 0xb4]
cmp edi, ebx
jne 0x497d40
push 1
push ebp
push 0x50de30
call fcn.004148c0
cmp dword [esp + edi*4 + 0xb8], ebp
je 0x497d56
push 1
push ebp
push 0x509da8
call fcn.004148c0
mov eax, dword [esp + edi*4 + 0xe0]
cdq
push edx
push eax
call fcn.00414560
cmp edi, ebx
jne 0x497d76
push 1
push ebp
push 0x50de34
call fcn.004148c0
inc edi
cmp edi, 0xa
jl 0x497d17
jmp 0x497d80
fstp st(0)
mov edx, dword [esp + 0x48]
mov eax, dword [edx + 0x10]
mov dword [esp + 0x48], eax
test eax, eax
jne 0x49782e
mov byte [esp + 0x15], 1
mov eax, dword [esp + 0x20]
push eax
call fcn.004ca991
mov ebp, dword [esp + 0x98]
add esp, 4
test ebp, ebp
je 0x497db9
push ebp
call fcn.004ca991
add esp, 4
or edi, 0xffffffff
mov dword [esp + 0x2858], edi
mov esi, dword [esp + 0x80]
test esi, esi
je 0x497e23
mov dword [esp + 0x38], esi
mov dword [esp + 0x2858], 2
mov ecx, dword [esi + 0x10]
test ecx, ecx
je 0x497deb
push 1
call fcn.00413f30
mov dword [esp + 0x2858], edi
mov eax, dword [esi + 4]
test eax, eax
je 0x497e1a
mov ecx, dword [esi]
push ecx
push 0
push eax
call fcn.004d2f90
mov edx, dword [esi + 4]
add esp, 0xc
push edx
call fcn.004ca991
add esp, 4
mov dword [esi + 4], 0
push esi
call fcn.004cb3e6
add esp, 4
mov ecx, dword [esp + 0x2850]
mov al, byte [esp + 0x15]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x284c
ret