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

Disassembly:
mov eax, 0x100cc206
call fcn.100bd27c
sub esp, 0x354
push ebx
push ebp
push esi
mov esi, dword [esp + 0x38c]
push edi
push 1
mov dword [esp + 0xa8], ecx
mov edi, dword [esi + 0x18]
mov eax, edi
mov ebp, dword [esi + 0x1c]
or eax, ebp
pop ecx
push 0
mov dword [esp + 0xb4], edx
mov dword [esp + 0xb0], edi
mov dword [esp + 0xac], ebp
pop eax
jne 0x10051e77
mov dword [esp + 0xac], ecx
mov dword [esp + 0xa8], eax
mov dword [esp + 0x64], eax
mov ebx, dword [esp + 0x38c]
lea ecx, [esp + 0x64]
push ecx
mov dword [esp + 0x370], eax
push 0x100d62dc
mov eax, dword [ebx]
push ebx
call dword [eax]
xor eax, eax
mov dword [esp + 0x94], eax
inc eax
lea ecx, [esp + 0x94]
push ecx
mov byte [esp + 0x370], al
mov eax, dword [ebx]
push 0x100d618c
push ebx
call dword [eax]
mov ebx, dword [esp + 0x378]
test ebx, ebx
je 0x10051ed4
mov eax, dword [ebx + 0xe8]
mov ecx, dword [ebx + 0xec]
jmp 0x10051eee
xorps xmm0, xmm0
movlpd qword [esp + 0x98], xmm0
mov ecx, dword [esp + 0x9c]
mov eax, dword [esp + 0x98]
xor edx, edx
cmp ecx, edx
ja 0x10051ef8
cmp eax, edx
jbe 0x10051f21
cmp byte [esi + 0x2a], dl
jne 0x10051f21
push edx
push ecx
mov ecx, dword [esp + 0xb8]
push eax
push edx
push edx
mov edx, dword [esp + 0x39c]
call fcn.10053d4e
mov edi, eax
test edi, edi
jne 0x10053c09
xor edx, edx
mov ebp, edx
mov dword [esp + 0x34], ebp
xorps xmm0, xmm0
mov byte [esp + 0x38], dl
movlpd qword [esp + 0x110], xmm0
movlpd qword [esp + 0x4c], xmm0
mov dword [esp + 0xd4], edx
mov dword [esp + 0xd8], edx
mov dword [esp + 0xdc], edx
mov dword [esp + 0xb4], edx
mov dword [esp + 0xb8], edx
mov dword [esp + 0xbc], edx
mov al, byte [esi + 8]
mov byte [esp + 0x36c], 4
mov byte [esp + 0x27], dl
mov byte [esp + 0x1b], al
test al, al
je 0x10051ff6
mov eax, dword [esi]
mov esi, edx
mov edi, dword [eax + 4]
test edi, edi
je 0x10051ff6
mov edx, dword [eax]
mov eax, dword [edx]
cmp dword [eax + 0x14], 0
mov ecx, dword [eax + 0x10]
ja 0x10051fe6
jb 0x10051f9d
cmp ecx, 0xffffffff
ja 0x10051fe6
mov eax, 0x3030205
cmp ecx, eax
ja 0x10051fc6
je 0x10051ff0
sub ecx, 3
je 0x10051ff0
sub ecx, 0x202ff
je 0x10051ff0
dec ecx
dec ecx
je 0x10051ff0
sub ecx, 0x300fdff
je 0x10051ff0
sub ecx, 0x18
jmp 0x10051fe4
cmp ecx, 0x3030401
je 0x10051ff0
cmp ecx, 0x3030501
je 0x10051ff0
cmp ecx, 0x3030701
je 0x10051ff0
cmp ecx, 0x3030805
je 0x10051ff0
inc esi
add edx, 4
cmp esi, edi
jb 0x10051f8b
jmp 0x10051ff6
xor eax, eax
mov byte [esp + 0x1b], al
test ebx, ebx
je 0x1005234f
push dword [ebx + 0x5c]
lea ecx, [esp + 0x38]
call fcn.1005088d
mov ebp, dword [esp + 0x34]
xor ecx, ecx
mov eax, ecx
cmp dword [ebx + 0x5c], eax
jbe 0x10052022
or dword [ebp + eax*4], 0xffffffff
inc eax
cmp eax, dword [ebx + 0x5c]
jb 0x10052017
mov edx, dword [esp + 0x37c]
cmp dword [edx + 4], ecx
jbe 0x10052044
mov eax, dword [edx]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax]
cmp eax, 0xffffffff
je 0x1005203e
mov dword [ebp + eax*4], ecx
inc ecx
cmp ecx, dword [edx + 4]
jb 0x1005202e
xor ecx, ecx
mov edi, ecx
mov dword [esp + 0x20], edi
cmp dword [ebx + 4], ecx
jbe 0x1005234f
mov eax, dword [esp + 0x114]
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x110]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x14], eax
mov dword [esp + 0x28], edx
jmp 0x1005207f
xor ecx, ecx
mov eax, dword [ebx + 0x24]
mov esi, ecx
mov dword [esp + 0x40], ecx
xorps xmm0, xmm0
movlpd qword [esp + 0x98], xmm0
mov ecx, dword [eax + edi*4]
mov eax, dword [ebx + 0x118]
mov dword [esp + 0x1c], ecx
mov eax, dword [eax + edi*4]
test ecx, ecx
je 0x1005233b
mov edi, dword [esp + 0x9c]
lea edx, [eax*4]
imul ecx, eax, 0x18
add edx, ebp
mov eax, dword [esp + 0x98]
mov ebp, esi
mov dword [esp + 0x44], eax
add ecx, dword [ebx + 0x58]
mov ebx, dword [esp + 0x1c]
cmp byte [ecx + 0x10], 0
je 0x1005210a
mov ebx, dword [edx]
inc esi
test ebx, ebx
js 0x10052106
mov eax, dword [esp + 0x37c]
mov eax, dword [eax]
mov eax, dword [eax + ebx*4]
mov ebx, dword [esp + 0x1c]
cmp byte [eax + 0x38], 0
jne 0x1005210a
mov eax, dword [esp + 0x44]
inc ebp
add eax, dword [ecx]
mov dword [esp + 0x44], eax
adc edi, dword [ecx + 4]
jmp 0x1005210a
mov ebx, dword [esp + 0x1c]
add ecx, 0x18
add edx, 4
cmp esi, ebx
jb 0x100520d3
mov dword [esp + 0x10], edi
test ebp, ebp
mov edi, dword [esp + 0x20]
mov dword [esp + 0x40], ebp
mov ebp, dword [esp + 0x34]
je 0x10052334
xor eax, eax
mov dword [esp + 0xe8], eax
mov dword [esp + 0xec], eax
mov dword [esp + 0xf0], eax
mov dword [esp + 0xf4], eax
mov dword [esp + 0xf8], eax
mov dword [esp + 0xfc], eax
mov esi, dword [esp + 0x378]
lea eax, [esp + 0xe8]
push eax
push edi
mov ecx, esi
mov byte [esp + 0x374], 5
call fcn.1004c8df
mov eax, dword [esi + 0x34]
lea ecx, [esp + 0xe8]
movzx esi, byte [eax + edi]
mov dword [esp + 0x100], esi
call fcn.100510a3
cmp dword [esp + 0x40], ebx
mov byte [esp + 0x2f], al
sete bh
cmp byte [esp + 0x1b], 0
jne 0x100521ad
test bh, bh
jne 0x100521ad
xor eax, eax
mov bl, al
jmp 0x100521b4
xor eax, eax
inc eax
mov bl, al
xor eax, eax
lea ecx, [esp + 0xe8]
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], eax
call fcn.100510a3
mov byte [esp + 0x70], al
test bl, bl
je 0x1005225c
imul ecx, esi, 0x18
push 3
pop esi
add ecx, dword [esp + 0xe8]
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
cmp eax, esi
jne 0x10052207
test edx, edx
jne 0x10052209
xor eax, eax
inc eax
cmp dword [ecx + 0xc], eax
jne 0x1005225c
mov eax, dword [ecx + 8]
mov dword [esp + 0x68], esi
movzx eax, byte [eax]
inc eax
mov dword [esp + 0x6c], eax
jmp 0x1005225c
test edx, edx
ja 0x1005225c
jb 0x10052214
cmp eax, 0x3030805
ja 0x1005225c
mov edx, 0x3030103
sub eax, edx
je 0x10052245
sub eax, 0x18
je 0x10052245
sub eax, 0xea
je 0x10052245
sub eax, 0x1fc
je 0x10052245
sub eax, 0x100
je 0x10052245
sub eax, 0x200
je 0x10052245
sub eax, 0x104
jne 0x1005225c
mov eax, dword [ecx]
cmp eax, 0x303011b
lea ecx, [esp + 0x68]
cmove eax, edx
mov dword [esp + 0x68], eax
call fcn.10051b61
lea edx, [esp + 0x68]
lea ecx, [esp + 0xd4]
call fcn.10050fa1
mov esi, eax
cmp esi, dword [esp + 0xb8]
jb 0x10052290
lea ecx, [esp + 0xb4]
call fcn.1004e8e6
cmp esi, dword [esp + 0xb8]
jae 0x10052277
mov ebp, dword [esp + 0x34]
mov eax, dword [esp + 0xb4]
push dword [esp + 0x40]
push edi
mov ecx, dword [eax + esi*4]
add ecx, 0xc
call fcn.1000eb6f
test bh, bh
je 0x100522d7
mov ebx, dword [esp + 0x378]
mov ecx, dword [ebx + 0x30]
mov esi, dword [ebx + 8]
mov eax, dword [ecx + edi*4 + 4]
mov ecx, dword [ecx + edi*4]
mov edx, dword [esi + eax*8]
sub edx, dword [esi + ecx*8]
mov eax, dword [esi + eax*8 + 4]
sbb eax, dword [esi + ecx*8 + 4]
add dword [esp + 0x54], edx
adc dword [esp + 0x48], eax
jmp 0x1005231e
mov eax, dword [esp + 0x44]
xor edx, edx
mov ecx, dword [esp + 0x10]
inc edx
add dword [esp + 0x54], eax
mov byte [esp + 0x27], dl
adc dword [esp + 0x48], ecx
cmp dword [esp + 0x14], ecx
ja 0x10052304
jb 0x100522fc
cmp dword [esp + 0x28], eax
jae 0x10052304
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x38]
cmp byte [esp + 0x2f], 0
movzx ebx, bl
cmovne ebx, edx
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0x378]
lea ecx, [esp + 0xe8]
mov byte [esp + 0x36c], 4
call fcn.10045d98
jmp 0x1005233b
mov ebx, dword [esp + 0x378]
inc edi
mov dword [esp + 0x20], edi
cmp edi, dword [ebx + 4]
jb 0x1005207d
mov edx, dword [esp + 0x28]
jmp 0x10052375
mov eax, dword [esp + 0x114]
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x110]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x14], eax
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x37c]
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov ecx, dword [esp + 0x78]
mov ebx, dword [eax + 4]
test ebx, ebx
je 0x100523e8
mov edi, dword [eax]
mov eax, dword [esp + 0x7c]
mov esi, dword [edi]
cmp byte [esi + 0x38], 0
je 0x100523dc
mov edx, dword [esi + 0x20]
add dword [esp + 0x54], edx
mov esi, dword [esi + 0x24]
adc dword [esp + 0x48], esi
cmp dword [esp + 0xac], 1
jne 0x100523d0
cmp dword [esp + 0xa8], 0
jne 0x100523d0
cmp eax, esi
ja 0x100523dc
jb 0x100523ca
cmp ecx, edx
jae 0x100523dc
mov ecx, edx
mov eax, esi
jmp 0x100523d4
add ecx, edx
adc eax, esi
mov dword [esp + 0x7c], eax
mov dword [esp + 0x78], ecx
add edi, 4
dec ebx
jne 0x10052396
mov edx, dword [esp + 0x28]
jmp 0x100523ec
mov eax, dword [esp + 0x7c]
mov ebx, dword [esp + 0x14]
cmp eax, ebx
ja 0x10052402
jb 0x100523fa
cmp ecx, edx
jae 0x10052402
mov dword [esp + 0x78], edx
mov dword [esp + 0x7c], ebx
mov esi, dword [esp + 0x38c]
push dword [esp + 0x48]
push dword [esp + 0x58]
mov eax, dword [esi]
push esi
call dword [eax + 0xc]
mov edi, eax
test edi, edi
jne 0x10053be9
push 0x38
call fcn.10003645
pop ecx
mov dword [esp + 0x4c], eax
mov byte [esp + 0x36c], 6
test eax, eax
je 0x10052448
mov ecx, eax
call fcn.1000955d
mov ebx, eax
mov dword [esp + 0x30], ebx
jmp 0x10052450
xor eax, eax
mov ebx, eax
mov dword [esp + 0x30], eax
mov byte [esp + 0x36c], 4
mov dword [esp + 0x110], ebx
test ebx, ebx
je 0x10052469
mov eax, dword [ebx]
push ebx
call dword [eax + 4]
xor eax, eax
mov byte [esp + 0x36c], 7
inc eax
mov ecx, ebx
push eax
push esi
call fcn.100095cb
xor eax, eax
mov dword [esp + 0x168], eax
mov dword [esp + 0x16c], eax
mov dword [esp + 0x170], eax
mov esi, dword [esp + 0x390]
mov byte [esp + 0x36c], 8
cmp byte [esi + 0x2b], al
je 0x100524be
lea ecx, [esp + 0x168]
call fcn.1000973e
mov edi, eax
test edi, edi
jne 0x10053bcb
movzx eax, byte [esi + 0x2b]
lea ecx, [esp + 0x1e0]
push eax
call fcn.10050427
cmp byte [esi + 0x2b], 0
mov byte [esp + 0x36c], 9
je 0x10052508
cmp byte [esp + 0x27], 0
je 0x10052508
mov eax, dword [esp + 0xa4]
lea ecx, [esp + 0x1e0]
mov dword [esp + 0x27c], eax
call fcn.1000a335
mov edi, eax
test edi, edi
jne 0x10053bb7
xor ebx, ebx
xor eax, eax
inc eax
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], ebx
mov byte [esp + 0x74], al
mov word [esp + 0x75], bx
mov byte [esp + 0x36c], 0xa
cmp dword [esi + 0xc], ebx
jne 0x1005253a
mov word [esp + 0x74], bx
mov byte [esp + 0x76], bl
jmp 0x1005256d
push dword [esp + 0x64]
lea ecx, [esp + 0x6c]
call fcn.100093a0
mov ecx, dword [esi + 0xc]
test ecx, ecx
jle 0x1005256d
xor edx, edx
inc edx
mov byte [esp + 0x74], dl
cmp ecx, 7
jl 0x1005256d
movzx eax, byte [esp + 0x76]
cmp ecx, 9
mov byte [esp + 0x75], dl
cmovge eax, edx
mov byte [esp + 0x76], al
mov ebx, dword [esi]
xor eax, eax
mov esi, eax
mov eax, dword [esp + 0x37c]
cmp dword [eax + 4], esi
jbe 0x1005263d
mov eax, dword [eax]
mov edi, dword [eax + esi*4]
cmp byte [edi + 0x38], 0
je 0x1005262c
mov ecx, edi
call fcn.10051037
test al, al
je 0x1005262c
xor eax, eax
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], eax
mov byte [esp + 0xc8], al
cmp byte [esp + 0x1b], al
je 0x100525db
lea eax, [esp + 0xc0]
push eax
push edi
push esi
lea ecx, [esp + 0x74]
call fcn.10050d91
mov edi, eax
test edi, edi
jne 0x10052697
mov al, byte [ebx + 0x21]
lea edx, [esp + 0xc0]
lea ecx, [esp + 0xd4]
mov byte [esp + 0xc8], al
call fcn.10050fa1
mov edi, eax
cmp edi, dword [esp + 0xb8]
jb 0x1005261c
lea ecx, [esp + 0xb4]
call fcn.1004e8e6
cmp edi, dword [esp + 0xb8]
jae 0x10052603
mov ebp, dword [esp + 0x34]
mov eax, dword [esp + 0xb4]
push esi
mov ecx, dword [eax + edi*4]
call fcn.10003027
mov eax, dword [esp + 0x37c]
inc esi
cmp esi, dword [eax + 4]
jb 0x10052583
lea ecx, [esp + 0x68]
mov byte [esp + 0x36c], 9
call fcn.100504cf
xor ebx, ebx
mov dword [esp + 0x104], ebx
mov dword [esp + 0x3c], ebx
mov byte [esp + 0x36c], 0xb
cmp byte [esp + 0x38], bl
je 0x1005275e
push 0x14
call fcn.10003645
pop ecx
mov dword [esp + 0x4c], eax
mov byte [esp + 0x36c], 0xc
test eax, eax
je 0x100526ad
mov ecx, eax
call fcn.10050288
mov esi, eax
mov dword [esp + 0x104], esi
jmp 0x100526b8
lea ecx, [esp + 0x68]
mov byte [esp + 0x36c], 9
call fcn.100504cf
jmp 0x10053bb3
xor ebx, ebx
mov esi, ebx
mov dword [esp + 0x104], ebx
push esi
lea ecx, [esp + 0x40]
mov byte [esp + 0x370], 0xb
call fcn.100093a0
push esi
lea ecx, [esp + 0x27c]
call fcn.100093a0
mov ecx, dword [esp + 0x390]
mov eax, dword [ecx]
cmp byte [eax + 0x21], 0
je 0x100526f4
add eax, 0x24
lea ecx, [esi + 8]
push eax
call fcn.10001fcc
jmp 0x1005275a
mov ecx, dword [esp + 0x394]
test ecx, ecx
jne 0x1005270d
mov edi, 0x80004001
mov ebx, dword [esp + 0x3c]
jmp 0x10053ba1
mov dword [esp + 0x1c], ebx
mov eax, dword [ecx]
lea edx, [esp + 0x1c]
push edx
push ecx
mov byte [esp + 0x374], 0xd
call dword [eax + 0xc]
mov edi, eax
test edi, edi
je 0x10052736
push dword [esp + 0x1c]
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
jmp 0x10052704
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x1005274b
push eax
lea ecx, [esi + 8]
call fcn.10002026
mov eax, dword [esp + 0x1c]
push eax
mov byte [esp + 0x370], 0xb
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov ebx, dword [esp + 0x3c]
mov esi, dword [esp + 0x380]
xor eax, eax
push eax
push dword [esp + 0x38c]
mov ecx, esi
call fcn.1004e990
mov edi, eax
test edi, edi
jne 0x10053ba1
mov ecx, esi
call fcn.1004ecbc
mov edi, eax
test edi, edi
jne 0x10053ba1
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], edi
mov dword [esp + 0x90], eax
mov esi, eax
mov byte [esp + 0x36c], 0xe
mov eax, dword [esp + 0x37c]
cmp dword [eax + 4], esi
jbe 0x10052811
mov ebp, dword [esp + 0x378]
mov ebx, eax
mov eax, dword [ebx]
mov eax, dword [eax + esi*4]
cmp byte [eax + 0x38], 0
je 0x100527db
mov ecx, eax
call fcn.10051037
test al, al
jmp 0x100527ed
mov eax, dword [eax]
cmp eax, 0xffffffff
je 0x100527ef
imul ecx, eax, 0x18
mov eax, dword [ebp + 0x58]
cmp byte [ecx + eax + 0x10], 0
jne 0x100527fc
push esi
lea ecx, [esp + 0x8c]
call fcn.10003027
inc esi
cmp esi, dword [ebx + 4]
jb 0x100527c5
mov edi, dword [esp + 0x8c]
mov ebx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x34]
mov esi, dword [esp + 0x37c]
lea ecx, [esp + 0x88]
push esi
push 0x100509b0
call fcn.1002bb6e
xor edx, edx
test edi, edi
je 0x10052926
mov ebx, dword [esp + 0x88]
mov ebp, edx
mov ecx, dword [ebx + ebp*4]
mov eax, dword [esi]
mov esi, dword [eax + ecx*4]
xor eax, eax
inc eax
mov byte [esp + 0xf9], dl
lea ecx, [esp + 0xc0]
mov byte [esp + 0xf8], al
mov byte [esp + 0xfa], dl
mov byte [esp + 0xfb], dl
call fcn.10001ed2
cmp byte [esi + 0x39], 0
lea eax, [esp + 0x1b8]
mov byte [esp + 0x36c], 0xf
push eax
je 0x100528a6
lea edx, [esp + 0xec]
mov ecx, esi
call fcn.10050c5d
lea eax, [esi + 0x28]
push eax
lea ecx, [esp + 0xc4]
call fcn.10001fcc
jmp 0x100528d2
mov edx, dword [esi]
lea eax, [esp + 0xec]
mov ecx, dword [esp + 0x37c]
push eax
call fcn.10050d1f
mov ecx, dword [esp + 0x378]
lea eax, [esp + 0xc0]
push eax
push dword [esi]
call fcn.1004c4ed
mov ecx, dword [esp + 0x384]
lea eax, [esp + 0xc0]
push eax
lea eax, [esp + 0x1bc]
push eax
lea eax, [esp + 0xf0]
push eax
call fcn.1004e84d
push dword [esp + 0xc0]
mov byte [esp + 0x370], 0xe
call fcn.1000366d
mov esi, dword [esp + 0x380]
inc ebp
pop ecx
push 0
pop edx
cmp ebp, edi
jb 0x1005283d
mov ebx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x34]
push dword [esp + 0x88]
mov byte [esp + 0x370], 0xb
call fcn.1000366d
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0xdc]
mov edi, dword [esp + 0xd8]
pop ecx
xor ecx, ecx
mov dword [eax + 0x18], ecx
mov dword [eax + 0x1c], ecx
mov eax, ecx
test esi, esi
je 0x10052968
lea ecx, [edi + 0xc]
mov dword [ecx], eax
inc eax
lea ecx, [ecx + 0x10]
cmp eax, esi
jb 0x1005295e
lea ecx, [esp + 0xd4]
call fcn.10051ba3
xor ecx, ecx
mov eax, ecx
mov dword [esp + 0xa0], eax
test esi, esi
je 0x10053b67
mov esi, eax
lea ecx, [esp + 0x188]
shl esi, 4
add esi, edi
mov edi, dword [esp + 0x390]
push dword [edi]
call fcn.1005021b
cmp byte [edi + 9], 0
mov byte [esp + 0x36c], 0x10
je 0x100529bc
cmp byte [edi + 0x2b], 0
je 0x100529bc
xor eax, eax
inc eax
jmp 0x100529be
xor eax, eax
push eax
mov edx, esi
lea ecx, [esp + 0x18c]
call fcn.100510f6
mov edi, eax
test edi, edi
jne 0x10053b59
cmp byte [esi + 8], al
je 0x10052a0c
cmp byte [esp + 0x1a9], al
jne 0x10052a28
mov eax, dword [esp + 0x104]
test eax, eax
je 0x10052a00
add eax, 8
lea ecx, [esp + 0x1ac]
push eax
call fcn.10001fcc
xor eax, eax
inc eax
mov byte [esp + 0x1a9], al
jmp 0x10052a28
xor eax, eax
xor ecx, ecx
mov byte [esp + 0x1a9], al
mov dword [esp + 0x1b0], eax
mov eax, dword [esp + 0x1ac]
mov word [eax], cx
lea eax, [esp + 0x188]
push eax
lea ecx, [esp + 0x2b4]
call fcn.10046de9
mov ecx, dword [esp + 0xb4]
xor edx, edx
mov eax, dword [esi + 0xc]
mov byte [esp + 0x36c], 0x11
mov esi, dword [ecx + eax*4]
mov ecx, edx
mov dword [esp + 0x58], esi
mov dword [esp + 0x44], ecx
cmp dword [esi + 0x10], ecx
jbe 0x1005342d
mov edx, dword [esi + 0xc]
mov edi, dword [esp + 0x378]
mov dword [esp + 0x4c], edx
mov esi, dword [edx + ecx*8]
mov eax, dword [edi + 0x24]
mov dword [esp + 0x14], esi
mov eax, dword [eax + esi*4]
mov dword [esp + 0x28], eax
cmp dword [edx + ecx*8 + 4], eax
jne 0x10052c5c
mov eax, dword [esp + 0x64]
test eax, eax
je 0x10052b12
mov ecx, dword [eax]
push 3
push esi
push 2
push eax
call dword [ecx + 0x10]
mov edi, eax
test edi, edi
jne 0x10053b45
mov edi, dword [esp + 0x378]
mov edx, eax
mov eax, dword [edi + 0x118]
mov esi, dword [eax + esi*4]
cmp dword [esp + 0x28], edx
jbe 0x10052b12
imul ecx, esi, 0x18
mov dword [esp + 0x10], ecx
mov eax, dword [edi + 0x58]
cmp byte [ecx + eax + 0x10], 0
je 0x10052b04
mov eax, dword [esp + 0x64]
inc edx
mov dword [esp + 0x20], edx
xor edx, edx
push 3
push esi
mov ecx, dword [eax]
inc edx
push edx
push eax
call dword [ecx + 0x10]
mov edi, eax
test edi, edi
jne 0x10053b45
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x378]
add ecx, 0x18
inc esi
mov dword [esp + 0x10], ecx
cmp edx, dword [esp + 0x28]
jb 0x10052acb
mov edx, dword [edi + 0x30]
mov esi, dword [edi + 8]
mov ecx, dword [esp + 0x14]
push dword [esp + 0x30]
mov eax, dword [edx + ecx*4 + 4]
mov ecx, dword [edx + ecx*4]
mov edi, dword [esi + eax*8]
sub edi, dword [esi + ecx*8]
mov eax, dword [esi + eax*8 + 4]
sbb eax, dword [esi + ecx*8 + 4]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x24], edi
mov eax, dword [edx + eax*4]
mov edx, dword [esp + 0x37c]
mov ecx, dword [esi + eax*8]
add ecx, dword [edx + 0xf8]
mov eax, dword [esi + eax*8 + 4]
adc eax, dword [edx + 0xfc]
mov esi, dword [esp + 0x14]
push esi
push edi
push eax
mov eax, dword [esp + 0x390]
push ecx
mov ecx, dword [esp + 0xc4]
mov edx, dword [eax + 0x54]
call fcn.10053d4e
mov edi, eax
test edi, edi
jne 0x10053b45
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x20]
add dword [ecx + 0x18], eax
adc dword [ecx + 0x1c], esi
mov ecx, dword [esp + 0x384]
lea ecx, [ecx + 0x54]
call fcn.1004e8e6
mov ecx, dword [esp + 0x378]
mov esi, eax
push esi
push dword [esp + 0x18]
mov dword [esp + 0x18], esi
call fcn.1004c8df
mov edx, dword [esp + 0x378]
mov ecx, dword [esp + 0x14]
mov eax, dword [edx + 0x30]
mov eax, dword [eax + ecx*4]
cmp dword [esi + 0x14], edi
jbe 0x10052c1c
mov ecx, dword [esp + 0x384]
mov esi, eax
mov ebx, dword [esp + 0x10]
add ecx, 0x30
shl esi, 3
mov ebp, ecx
mov edx, dword [edx + 8]
mov ecx, dword [edx + esi + 8]
sub ecx, dword [edx + esi]
mov eax, dword [edx + esi + 0xc]
sbb eax, dword [edx + esi + 4]
push eax
push ecx
mov ecx, ebp
call fcn.1000eb6f
mov edx, dword [esp + 0x378]
lea esi, [esi + 8]
inc edi
cmp edi, dword [ebx + 0x14]
jb 0x10052be5
mov ebx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x34]
mov ecx, dword [esp + 0x14]
mov eax, dword [edx + 0x2c]
mov edi, dword [eax + ecx*4 + 4]
mov esi, dword [eax + ecx*4]
cmp esi, edi
jae 0x10053240
mov ebp, dword [esp + 0x384]
mov eax, dword [edx + 0x28]
lea ecx, [ebp + 0x24]
push dword [eax + esi*8 + 4]
push dword [eax + esi*8]
call fcn.1000eb6f
mov edx, dword [esp + 0x378]
inc esi
cmp esi, edi
jb 0x10052c35
mov ebp, dword [esp + 0x34]
jmp 0x10053240
xor ecx, ecx
mov dword [esp + 0x118], ecx
mov dword [esp + 0x11c], ecx
mov dword [esp + 0x120], ecx
mov eax, dword [esp + 0x64]
mov byte [esp + 0x36c], 0x12
mov dword [esp + 0x10], ecx
test eax, eax
je 0x10052ca5
mov ecx, dword [eax]
push 4
push esi
push 2
push eax
call dword [ecx + 0x10]
mov edi, eax
test edi, edi
jne 0x10053afb
mov edi, dword [esp + 0x378]
xor ecx, ecx
cmp dword [esp + 0x28], 0
xorps xmm0, xmm0
mov eax, dword [edi + 0x118]
movlpd qword [esp + 0x80], xmm0
mov eax, dword [eax + esi*4]
jbe 0x10052d8b
mov edx, dword [esp + 0x80]
mov ebx, dword [esp + 0x84]
imul edi, eax, 0x18
lea eax, [eax*4]
add eax, ebp
mov dword [esp + 0x1c], edx
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x20], eax
mov edx, dword [esp + 0x378]
mov dword [esp + 0x10], ecx
mov byte [esp + 0x108], cl
mov esi, dword [edx + 0x58]
cmp byte [esi + edi + 0x10], 0
je 0x10052d32
mov edx, dword [eax]
inc ebp
test edx, edx
js 0x10052d32
mov eax, dword [esp + 0x37c]
push 1
movzx ecx, cl
mov eax, dword [eax]
mov eax, dword [eax + edx*4]
cmp byte [eax + 0x38], 0
pop eax
cmove ecx, eax
mov dword [esp + 0x10], ecx
mov byte [esp + 0x108], cl
push dword [esp + 0x108]
lea ecx, [esp + 0x11c]
call fcn.1007e49f
cmp byte [esp + 0x10], 0
je 0x10052d5b
mov edx, dword [esp + 0x1c]
add edx, dword [esi + edi]
mov dword [esp + 0x1c], edx
adc ebx, dword [esi + edi + 4]
mov eax, dword [esp + 0x20]
add edi, 0x18
add eax, 4
push 0
mov dword [esp + 0x24], eax
pop ecx
cmp ebp, dword [esp + 0x28]
jb 0x10052ceb
mov ebp, dword [esp + 0x34]
mov edi, dword [esp + 0x378]
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0x3c]
jmp 0x10052da1
mov eax, dword [esp + 0x84]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x384]
mov eax, dword [eax + 0x34]
mov dword [esp + 0x80], eax
xor eax, eax
mov dword [esp + 0x40], eax
push 0x1c
mov byte [esp + 0x370], 0x13
mov dword [esp + 0x60], eax
call fcn.10003645
pop ecx
test eax, eax
je 0x10052dd9
mov ecx, eax
call fcn.10050408
jmp 0x10052ddb
xor eax, eax
mov esi, eax
mov dword [esp + 0x20], esi
test esi, esi
je 0x10052deb
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov eax, dword [esp + 0x390]
mov byte [esp + 0x36c], 0x14
cmp byte [eax + 0x2b], 0
je 0x10052ecb
mov eax, dword [esp + 0x260]
test eax, eax
je 0x10052e1a
lea ecx, [eax + 8]
xor eax, eax
mov dword [esp + 0x60], ecx
jmp 0x10052e20
xor eax, eax
mov dword [esp + 0x60], eax
mov dword [esp + 0xd0], eax
lea eax, [esp + 0xd0]
mov byte [esp + 0x36c], 0x15
push eax
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x170]
call fcn.10009765
lea ecx, [esp + 0x168]
call fcn.100097fc
mov ecx, dword [esp + 0x260]
push dword [esp + 0xd0]
lea ecx, [ecx + 0x34]
call fcn.100093a0
push dword [esp + 0xb0]
lea ecx, [esp + 0x260]
call fcn.100093a0
mov eax, dword [edi + 0xf8]
mov dword [esp + 0x268], eax
mov eax, dword [edi + 0xfc]
mov dword [esp + 0x26c], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x274], eax
mov eax, dword [esp + 0xd0]
mov dword [esp + 0x270], edi
mov byte [esp + 0x36c], 0x14
test eax, eax
je 0x10052fdf
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x10052fdf
push 0x40
call fcn.10003645
pop ecx
mov dword [esp + 0x10], eax
mov byte [esp + 0x36c], 0x16
test eax, eax
je 0x10052ef4
mov ecx, eax
call fcn.100502a1
mov edi, eax
xor eax, eax
mov dword [esp + 0x5c], edi
jmp 0x10052efc
xor eax, eax
mov edi, eax
mov dword [esp + 0x5c], eax
push edi
lea ecx, [esp + 0x44]
mov byte [esp + 0x370], 0x14
mov dword [edi + 0x3c], eax
call fcn.100093a0
lea ecx, [edi + 8]
xor eax, eax
mov dword [esp + 0x60], ecx
lea ecx, [esp + 0x68]
mov byte [esp + 0x27], al
mov byte [esp + 0x2f], al
call fcn.10001ed2
xor ecx, ecx
mov dword [esp + 0xe4], ecx
xor eax, eax
mov byte [esp + 0x36c], 0x18
inc eax
push eax
push ecx
lea eax, [esp + 0x70]
push eax
lea eax, [esp + 0x3b]
push eax
lea eax, [esp + 0x37]
push eax
push ebx
lea eax, [esp + 0xfc]
push eax
mov eax, dword [esp + 0x394]
push ecx
push ecx
push ecx
push dword [esp + 0x3c]
lea ecx, [esp + 0x220]
push eax
push dword [eax + 0xfc]
push dword [eax + 0xf8]
push dword [esp + 0xe8]
push dword [esp + 0xe0]
call fcn.10046069
mov edi, eax
mov eax, dword [esp + 0xe4]
test edi, edi
jne 0x10053ab7
test eax, eax
je 0x10053ab2
mov ecx, dword [esp + 0x5c]
push eax
add ecx, 0x38
call fcn.100093a0
mov eax, dword [esp + 0xe4]
mov byte [esp + 0x36c], 0x17
test eax, eax
je 0x10052fcd
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push dword [esp + 0x68]
mov byte [esp + 0x370], 0x14
call fcn.1000366d
pop ecx
mov edi, dword [esp + 0x60]
mov eax, dword [esp + 0x378]
mov dword [edi + 0x1c], eax
lea ecx, [edi + 0x20]
push dword [esp + 0x64]
call fcn.100093a0
push dword [esp + 0x94]
lea ecx, [edi + 0x24]
call fcn.100093a0
mov ecx, dword [esp + 0x378]
mov eax, dword [ecx + 0x118]
mov ecx, dword [esp + 0x14]
mov eax, dword [eax + ecx*4]
lea ecx, [esp + 0x118]
push ecx
push eax
mov ecx, edi
mov dword [esp + 0x18], eax
call fcn.10051052
mov edi, eax
test edi, edi
jne 0x10053ad3
mov eax, dword [esp + 0x378]
mov ecx, dword [esp + 0x10]
mov dword [esi + 0x18], eax
mov eax, dword [esp + 0x40]
mov dword [esi + 0x14], ecx
lea ecx, [esp + 0x118]
mov dword [esi + 0x10], ecx
lea ecx, [esi + 0xc]
push eax
call fcn.100093a0
mov eax, dword [esp + 0x390]
cmp byte [eax + 0x2b], 0
je 0x1005307b
lea ecx, [esp + 0x1e0]
call fcn.1000a38d
mov ecx, dword [esp + 0x384]
push dword [esp + 0x30]
lea eax, [ecx + 0x30]
push eax
mov eax, dword [esp + 0x388]
push dword [eax + 0x54]
lea eax, [esp + 0xa4]
push eax
lea eax, [ecx + 0x24]
add ecx, 0x54
push eax
call fcn.1004e8e6
push eax
lea eax, [esp + 0x90]
push eax
push esi
push dword [esp + 0xc4]
lea ecx, [esp + 0x2d4]
call fcn.1004751c
mov edi, eax
cmp edi, 0x20000002
je 0x10053aab
mov eax, dword [esp + 0x390]
cmp byte [eax + 0x2b], 0
je 0x10053154
mov eax, dword [esi]
push esi
call dword [eax + 8]
xor eax, eax
mov esi, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x20], esi
test eax, eax
je 0x10053102
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
xor eax, eax
mov dword [esp + 0x40], eax
mov ecx, dword [esp + 0x1e8]
call fcn.100b6d90
mov eax, dword [esp + 0x258]
xor ecx, ecx
inc ecx
cmp eax, ecx
je 0x10053a5e
test eax, eax
jne 0x10053a5a
test edi, edi
jne 0x10053ad3
mov edx, dword [esp + 0x1c]
cmp dword [esp + 0x180], edx
jne 0x10053aab
mov eax, dword [esp + 0x38]
cmp dword [esp + 0x184], eax
jne 0x10053aab
jmp 0x1005317a
mov eax, dword [esp + 0x5c]
xor ecx, ecx
inc ecx
mov eax, dword [eax + 0x3c]
cmp eax, ecx
je 0x10053a8b
test eax, eax
jne 0x10053a5a
test edi, edi
jne 0x10053ad3
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x60]
mov edi, 0x80004005
and dword [esp + 0x10], 0
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 4]
cmp dword [ecx + 0x18], eax
cmove edi, dword [esp + 0x10]
test edi, edi
jne 0x10053ad3
cmp dword [esp + 0x98], edx
jne 0x10053aab
mov eax, dword [esp + 0x38]
cmp dword [esp + 0x9c], eax
jne 0x10053aab
mov byte [esp + 0x36c], 0x13
test esi, esi
je 0x100531ce
mov eax, dword [esi]
push esi
call dword [eax + 8]
mov eax, dword [esp + 0x40]
mov byte [esp + 0x36c], 0x12
test eax, eax
je 0x100531e4
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x384]
mov edx, dword [esp + 0x80]
mov esi, dword [esp + 0x30]
cmp edx, dword [eax + 0x34]
jae 0x10053217
mov ebp, eax
mov ecx, dword [ebp + 0x30]
mov eax, dword [ecx + edx*8]
add dword [esi + 0x28], eax
mov eax, dword [ecx + edx*8 + 4]
adc dword [esi + 0x2c], eax
inc edx
cmp edx, dword [ebp + 0x34]
jb 0x100531fd
mov ebp, dword [esp + 0x34]
mov eax, dword [esp + 0x98]
add dword [esi + 0x20], eax
mov eax, dword [esp + 0x9c]
push dword [esp + 0x118]
adc dword [esi + 0x24], eax
mov byte [esp + 0x370], 0x11
call fcn.1000366d
pop ecx
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x4c]
push dword [ecx + eax*8 + 4]
mov ecx, dword [esp + 0x388]
lea ecx, [ecx + 0x18]
call fcn.10003027
mov eax, dword [esp + 0x378]
xor edx, edx
mov edi, edx
mov ecx, dword [esp + 0x14]
mov eax, dword [eax + 0x118]
mov esi, dword [eax + ecx*4]
mov dword [esp + 0x10], esi
cmp dword [esp + 0x28], edx
jbe 0x10053417
mov ebx, dword [esp + 0x378]
xor eax, eax
mov byte [esp + 0x14d], dl
inc eax
mov byte [esp + 0x14e], dl
mov byte [esp + 0x14c], al
mov ecx, ebx
lea eax, [esp + 0x288]
mov byte [esp + 0x14f], dl
push eax
lea eax, [esp + 0x140]
mov edx, esi
push eax
call fcn.10050d1f
lea ecx, [esp + 0xc0]
call fcn.10001ed2
lea eax, [esp + 0xc0]
mov byte [esp + 0x36c], 0x19
push eax
push esi
mov ecx, ebx
call fcn.1004c4ed
cmp byte [esp + 0x14c], 0
je 0x100533ec
mov ecx, dword [ebp + esi*4]
inc edi
mov dword [esp + 0x80], edi
test ecx, ecx
js 0x100533ec
mov eax, dword [esp + 0x37c]
mov eax, dword [eax]
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x4c], eax
cmp byte [eax + 0x38], 0
jne 0x100533ec
cmp byte [eax + 0x39], 0
je 0x100533c8
xor ecx, ecx
lea edx, [esp + 0xe8]
mov byte [esp + 0xf9], cl
mov byte [esp + 0xfb], cl
lea ecx, [esp + 0x288]
push ecx
mov ecx, eax
call fcn.10050c5d
mov eax, dword [esp + 0x13c]
lea esi, [esp + 0xe8]
mov dword [esp + 0xe8], eax
lea edi, [esp + 0x13c]
mov eax, dword [esp + 0x140]
mov dword [esp + 0xec], eax
mov eax, dword [esp + 0x148]
mov dword [esp + 0xf4], eax
mov al, byte [esp + 0x14e]
mov byte [esp + 0xfa], al
mov al, byte [esp + 0x14c]
mov byte [esp + 0xf8], al
mov eax, dword [esp + 0x4c]
push 6
pop ecx
rep movsd dword es:[edi], dword [esi]
add eax, 0x28
lea ecx, [esp + 0xc0]
push eax
call fcn.10001fcc
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x80]
mov ecx, dword [esp + 0x384]
lea eax, [esp + 0xc0]
push eax
lea eax, [esp + 0x28c]
push eax
lea eax, [esp + 0x144]
push eax
call fcn.1004e84d
push dword [esp + 0xc0]
mov byte [esp + 0x370], 0x11
call fcn.1000366d
pop ecx
inc esi
push 0
mov dword [esp + 0x14], esi
pop edx
cmp edi, dword [esp + 0x28]
jb 0x10053288
mov ebx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x44]
mov esi, dword [esp + 0x58]
inc ecx
mov dword [esp + 0x44], ecx
cmp ecx, dword [esi + 0x10]
jb 0x10052a66
mov edi, dword [esi + 4]
mov dword [esp + 0x28], edi
test edi, edi
je 0x10053a0a
mov dword [esp + 0x88], edx
mov dword [esp + 0x8c], edx
mov dword [esp + 0x90], edx
push edi
lea ecx, [esp + 0x8c]
mov byte [esp + 0x370], 0x1a
call fcn.100508e9
mov eax, dword [esp + 0x390]
mov dword [esp + 0x8c], edi
cmp byte [eax + 0x29], 0
je 0x1005349a
xor ecx, ecx
xor eax, eax
inc ecx
cmp dword [esp + 0xa8], eax
ja 0x10053491
cmp dword [esp + 0xac], ecx
jbe 0x1005349c
mov byte [esp + 0xe0], cl
jmp 0x100534a3
xor eax, eax
mov byte [esp + 0xe0], al
mov dword [esp + 0x4c], eax
test edi, edi
je 0x100534fa
mov ebx, dword [esp + 0x88]
mov ebp, eax
mov edx, dword [esi]
mov eax, dword [esp + 0x37c]
push dword [esp + 0xe0]
mov ecx, dword [edx + ebp*4]
mov eax, dword [eax]
push dword [eax + ecx*4]
push ecx
lea ecx, [esp + 0x148]
call fcn.1005032c
push 5
mov edi, ebx
mov esi, eax
pop ecx
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x28]
inc ebp
mov esi, dword [esp + 0x58]
add ebx, 0x14
cmp ebp, edi
jb 0x100534b4
mov ebx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x34]
mov al, byte [esp + 0xe0]
lea ecx, [esp + 0x88]
mov byte [esp + 0x1b], al
lea eax, [esp + 0x1b]
push eax
push 0x10050a12
call fcn.10051c15
push edi
lea ecx, [esp + 0x110]
call fcn.10045b6d
mov esi, dword [esp + 0x10c]
xor edx, edx
mov byte [esp + 0x36c], 0x1b
mov ecx, edx
test edi, edi
je 0x10053558
mov edx, dword [esp + 0x88]
add edx, 4
mov eax, dword [edx]
lea edx, [edx + 0x14]
mov dword [esi + ecx*4], eax
inc ecx
cmp ecx, edi
jb 0x10053549
xor edx, edx
mov ecx, edx
mov dword [esp + 0x1c], ecx
test edi, edi
je 0x100539f6
mov eax, dword [esp + 0x28]
jmp 0x1005356e
xor edx, edx
mov dword [esp + 0x4c], edx
xorps xmm0, xmm0
movlpd qword [esp + 0x80], xmm0
mov edi, edx
mov dword [esp + 0x14], edi
cmp ecx, eax
jae 0x10053683
mov eax, dword [esp + 0x84]
mov ebp, edi
mov edx, dword [esp + 0x80]
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x10], eax
xor eax, eax
cmp eax, dword [esp + 0xa8]
ja 0x10053672
jb 0x100535c2
cmp edi, dword [esp + 0xac]
jae 0x10053672
lea eax, [edi + ebx]
mov ecx, dword [esi + eax*4]
mov eax, dword [esp + 0x37c]
mov esi, dword [esp + 0x390]
mov eax, dword [eax]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x4c], eax
add edx, dword [eax + 0x20]
mov dword [esp + 0x58], edx
adc ecx, dword [eax + 0x24]
cmp ecx, dword [esi + 0x24]
mov esi, dword [esp + 0x10c]
mov dword [esp + 0x10], ecx
ja 0x10053672
mov ecx, dword [esp + 0x390]
jb 0x1005360b
cmp edx, dword [ecx + 0x20]
ja 0x10053672
cmp byte [ecx + 0x28], 0
je 0x10053660
add eax, 0x28
mov ecx, eax
mov dword [esp + 0x20], eax
call fcn.10002a9a
mov ecx, dword [esp + 0x20]
mov edi, eax
push 0x2e
call fcn.10002a6e
cmp eax, edi
jg 0x10053639
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax + 0x2c]
jmp 0x1005363c
lea ecx, [eax + 1]
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x14]
mov eax, dword [eax]
lea ecx, [eax + ecx*2]
test edi, edi
jne 0x10053651
mov ebp, ecx
jmp 0x1005365c
mov edx, ebp
call fcn.10002db7
test al, al
je 0x10053672
mov edx, dword [esp + 0x58]
inc edi
mov dword [esp + 0x14], edi
lea eax, [edi + ebx]
cmp eax, dword [esp + 0x28]
jb 0x100535a4
mov ebx, dword [esp + 0x3c]
xor eax, eax
mov ebp, dword [esp + 0x34]
inc eax
cmp edi, eax
jae 0x1005368a
jmp 0x10053686
xor eax, eax
inc eax
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x30]
call fcn.1000962a
mov edi, eax
test edi, edi
jne 0x10053b31
push 0x60
call fcn.10003645
pop ecx
test eax, eax
je 0x100536b8
mov ecx, eax
call fcn.100502ef
mov edi, eax
mov dword [esp + 0x44], edi
jmp 0x100536c0
xor eax, eax
mov edi, eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x80], edi
test edi, edi
je 0x100536d1
mov eax, dword [edi]
push edi
call dword [eax + 4]
mov eax, dword [esp + 0x1c]
mov ecx, edi
push dword [esp + 0x14]
mov byte [esp + 0x370], 0x1c
lea eax, [esi + eax*4]
push eax
push dword [esp + 0x394]
mov dword [esp + 0x2c], eax
call fcn.10048f0e
mov ecx, dword [esp + 0x384]
push dword [esp + 0x30]
mov eax, dword [ecx + 0x34]
mov dword [esp + 0x50], eax
lea eax, [ecx + 0x30]
push eax
mov eax, dword [esp + 0x388]
push dword [eax + 0x54]
lea eax, [esp + 0x16c]
push eax
lea eax, [ecx + 0x24]
add ecx, 0x54
push eax
call fcn.1004e8e6
push eax
lea eax, [esp + 0x90]
push eax
push edi
push dword [esp + 0xc4]
lea ecx, [esp + 0x2d4]
call fcn.1004751c
mov edi, eax
test edi, edi
jne 0x10053b1b
mov edi, dword [esp + 0x44]
mov eax, dword [edi + 0x30]
cmp eax, dword [edi + 0x2c]
jne 0x10053b16
mov eax, dword [esp + 0x384]
mov edx, dword [esp + 0x4c]
cmp edx, dword [eax + 0x34]
jae 0x10053796
mov ebp, dword [esp + 0x30]
mov ebx, eax
mov ecx, dword [ebx + 0x30]
mov eax, dword [ecx + edx*8]
add dword [ebp + 0x28], eax
mov eax, dword [ecx + edx*8 + 4]
adc dword [ebp + 0x2c], eax
inc edx
cmp edx, dword [ebx + 0x34]
jb 0x10053778
mov ebx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
xorps xmm0, xmm0
mov eax, dword [esp + 0x160]
movlpd qword [esp + 0x4c], xmm0
add dword [ecx + 0x20], eax
mov eax, dword [esp + 0x164]
adc dword [ecx + 0x24], eax
xor edx, edx
mov eax, dword [esp + 0x50]
mov ecx, edx
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x58], edx
mov dword [esp + 0x60], eax
cmp dword [esp + 0x14], ecx
jbe 0x1005396e
mov ecx, dword [esp + 0x20]
jmp 0x100537e5
xor edx, edx
mov ecx, dword [ecx]
mov eax, dword [esp + 0x37c]
mov eax, dword [eax]
mov ecx, dword [eax + ecx*4]
xor eax, eax
mov dword [esp + 0x38], ecx
inc eax
lea ecx, [esp + 0x154]
mov byte [esp + 0x134], al
mov word [esp + 0x135], 0
mov byte [esp + 0x137], dl
call fcn.10001ed2
mov eax, dword [esp + 0x38]
lea ecx, [esp + 0x1b8]
mov byte [esp + 0x36c], 0x1d
push ecx
cmp byte [eax + 0x39], 0
je 0x1005385c
lea edx, [esp + 0x128]
mov ecx, eax
call fcn.10050c5d
mov eax, dword [esp + 0x38]
lea ecx, [esp + 0x154]
add eax, 0x28
push eax
call fcn.10001fcc
jmp 0x1005388c
mov edx, dword [eax]
lea ecx, [esp + 0x128]
push ecx
mov ecx, dword [esp + 0x380]
call fcn.10050d1f
mov ecx, dword [esp + 0x38]
lea eax, [esp + 0x154]
push eax
push dword [ecx]
mov ecx, dword [esp + 0x380]
call fcn.1004c4ed
cmp byte [esp + 0x1dc], 0
jne 0x10053b09
cmp byte [esp + 0x135], 0
jne 0x10053b09
mov eax, dword [edi + 0x38]
mov edx, dword [esp + 0x58]
cmp byte [edx + eax], 0
jne 0x100538d1
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x60]
add ecx, dword [eax + 0x20]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x5c]
adc ecx, dword [eax + 0x24]
mov dword [esp + 0x5c], ecx
jmp 0x10053937
mov eax, dword [edi + 0x44]
mov eax, dword [eax + edx*4]
mov dword [esp + 0x130], eax
mov eax, dword [edi + 0x50]
mov ecx, dword [eax + edx*8]
mov dword [esp + 0x124], ecx
mov eax, dword [eax + edx*8 + 4]
or ecx, eax
mov dword [esp + 0x128], eax
je 0x10053903
xor eax, eax
inc eax
inc dword [esp + 0x10]
jmp 0x10053905
xor eax, eax
mov ecx, dword [esp + 0x384]
mov byte [esp + 0x134], al
mov byte [esp + 0x136], al
lea eax, [esp + 0x154]
push eax
lea eax, [esp + 0x1bc]
push eax
lea eax, [esp + 0x12c]
push eax
call fcn.1004e84d
push dword [esp + 0x154]
mov byte [esp + 0x370], 0x1c
call fcn.1000366d
mov eax, dword [esp + 0x5c]
pop ecx
mov ecx, dword [esp + 0x20]
inc eax
add ecx, 4
mov dword [esp + 0x58], eax
mov dword [esp + 0x20], ecx
cmp eax, dword [esp + 0x14]
jb 0x100537e3
mov ecx, dword [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x388]
lea ecx, [ecx + 0x18]
call fcn.10003027
mov eax, dword [esp + 0x1c]
add eax, dword [esp + 0x14]
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x1c], eax
mov eax, edx
or eax, ecx
je 0x100539d8
mov eax, dword [esp + 0x48]
cmp eax, ecx
jb 0x100539d8
ja 0x100539a8
cmp dword [esp + 0x54], edx
jb 0x100539d8
mov edi, dword [esp + 0x54]
sub edi, edx
mov dword [esp + 0x54], edi
sbb eax, ecx
mov ecx, dword [esp + 0x38c]
mov dword [esp + 0x48], eax
push dword [esp + 0x48]
mov eax, dword [ecx]
push edi
push ecx
call dword [eax + 0xc]
mov edi, eax
test edi, edi
jne 0x10053b1b
mov edi, dword [esp + 0x44]
mov eax, dword [edi]
push edi
mov byte [esp + 0x370], 0x1b
call dword [eax + 8]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
cmp ecx, eax
jb 0x1005356c
push esi
call fcn.1000366d
push dword [esp + 0x8c]
call fcn.1000366d
pop ecx
pop ecx
lea ecx, [esp + 0x2b0]
mov byte [esp + 0x36c], 0x10
call fcn.10046fc0
lea ecx, [esp + 0x188]
mov byte [esp + 0x36c], 0xb
call fcn.10046fa3
mov eax, dword [esp + 0xa0]
inc eax
mov dword [esp + 0xa0], eax
cmp eax, dword [esp + 0xd8]
jae 0x10053b67
mov edi, dword [esp + 0xd4]
jmp 0x10052987
mov edi, eax
jmp 0x10053ad3
mov eax, dword [esp + 0x94]
test eax, eax
je 0x10053aab
mov ecx, dword [esp + 0x378]
mov edi, dword [esp + 0x14]
mov edx, dword [eax]
push 2
mov ecx, dword [ecx + 0x118]
push dword [ecx + edi*4]
xor ecx, ecx
inc ecx
push ecx
push eax
call dword [edx + 0x14]
jmp 0x10053aa5
mov eax, dword [esp + 0x94]
test eax, eax
je 0x10053aab
mov edi, dword [esp + 0x14]
mov ecx, dword [eax]
push 2
push edi
push 2
push eax
call dword [ecx + 0x14]
mov edi, eax
test edi, edi
jne 0x10053ad3
mov edi, 0x80004005
jmp 0x10053ad3
mov edi, 0x80004005
mov byte [esp + 0x36c], 0x17
test eax, eax
je 0x10053ac9
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push dword [esp + 0x68]
call fcn.1000366d
pop ecx
mov byte [esp + 0x36c], 0x13
test esi, esi
je 0x10053ae5
mov eax, dword [esi]
push esi
call dword [eax + 8]
mov eax, dword [esp + 0x40]
mov byte [esp + 0x36c], 0x12
test eax, eax
je 0x10053afb
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push dword [esp + 0x118]
call fcn.1000366d
jmp 0x10053b44
push dword [esp + 0x154]
call fcn.1000366d
pop ecx
mov edi, 0x80004005
mov ecx, dword [esp + 0x44]
mov byte [esp + 0x36c], 0x1b
test ecx, ecx
je 0x10053b31
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
push esi
call fcn.1000366d
push dword [esp + 0x8c]
call fcn.1000366d
pop ecx
pop ecx
lea ecx, [esp + 0x2b0]
mov byte [esp + 0x36c], 0x10
call fcn.10046fc0
lea ecx, [esp + 0x188]
call fcn.10046fa3
jmp 0x10053ba1
mov ecx, dword [esp + 0x30]
call fcn.1000962a
mov edi, eax
test edi, edi
jne 0x10053ba1
mov ecx, dword [esp + 0x384]
call fcn.10051a4f
mov eax, dword [esp + 0x64]
test eax, eax
je 0x10053b9d
mov ecx, dword [eax]
xor edx, edx
push 7
push 0xffffffffffffffff
push edx
push eax
call dword [ecx + 0x10]
mov edi, eax
test edi, edi
jne 0x10053ba1
xor eax, eax
mov edi, eax
mov byte [esp + 0x36c], 9
test ebx, ebx
je 0x10053bb3
mov eax, dword [ebx]
push ebx
call dword [eax + 8]
mov ebx, dword [esp + 0x30]
lea ecx, [esp + 0x1e0]
mov byte [esp + 0x36c], 8
call fcn.10050611
lea ecx, [esp + 0x168]
call fcn.10043260
mov byte [esp + 0x36c], 4
test ebx, ebx
je 0x10053be9
mov eax, dword [ebx]
push ebx
call dword [eax + 8]
lea ecx, [esp + 0xb4]
call fcn.10038719
push dword [esp + 0xd4]
call fcn.1000366d
push ebp
call fcn.1000366d
pop ecx
pop ecx
xor eax, eax
mov byte [esp + 0x36c], al
mov eax, dword [esp + 0x94]
test eax, eax
je 0x10053c23
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
or dword [esp + 0x36c], 0xffffffff
mov ecx, dword [esp + 0x64]
test ecx, ecx
je 0x10053c39
mov edx, dword [ecx]
push ecx
call dword [edx + 8]
mov ecx, dword [esp + 0x364]
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
leave
ret 0x20