Function at 0x100152c0
Capabilities:
Accept command line arguments
Get common file path
Resolve function by parsing pe exports
Set registry value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x10065f5f
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xb60
push ebx
push esi
push edi
push 3
mov dword [esp + 0x64], ecx
mov esi, edx
pop edi
mov dword [esp + 0x20], 0x28fbc781
lea ecx, [esp + 0x1c8]
mov dword [esp + 0x1c], 0xffffffff
push edi
mov dword [esp + 0x78], esi
call fcn.100179d6
xor ebx, ebx
mov dword [esp + 0xc], ebx
jmp 0x10015329
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x12c], 0xccce
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edi
jl 0x10015316
push 4
mov dword [esp + 0x10], ebx
pop edx
jmp 0x1001534a
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x1c8]
mov dword [eax + ecx*4], edx
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edi
jl 0x10015338
cmp dword [esp + 0x12c], ebx
je 0x10015374
mov eax, dword [esp + 0x12c]
mov eax, dword [esp + 0x134]
push 0xfffffffffffffffc
pop ecx
sub ecx, eax
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x20]
mov eax, dword [esp + 0x12c]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c8]
sub ecx, 0xfffffffd
neg ecx
sbb ecx, ecx
inc ecx
mov dword [eax + 8], ecx
lea ecx, [esp + 0x1c8]
call fcn.10017a38
mov eax, dword [0x10ae1d68]
xor edi, edi
inc edi
test al, 1
jne 0x10015448
or eax, edi
mov dword [0x10ae1d68], eax
push ebx
mov dword [esp + 0xb78], ebx
push ebx
mov dword [0x10ae1d20], ebx
mov dword [0x10ae1d24], ebx
call fcn.1001ba31
mov dword [0x10ae1d20], eax
mov dword [0x10ae1d28], ebx
mov dword [0x10ae1d30], ebx
mov byte [esp + 0xb74], 2
mov ecx, 0x10ae1d28
mov dword [esp + 0xf8], eax
lea eax, [esp + 0xf8]
push eax
push 0x10
push ebx
lea eax, [esp + 0x1ec]
mov dword [0x10ae1d3c], 0x3f800000
push eax
mov dword [0x10ae1d2c], ebx
call fcn.1001b809
push 0x10066e3e
mov dword [0x10ae1d34], 7
mov dword [0x10ae1d38], 8
call fcn.1004d78c
or eax, 0xffffffff
pop ecx
mov dword [esp + 0xb74], eax
imul eax, dword [esp + 0x60], 0x2710
add eax, esi
mov dword [esp + 0x84], eax
lea eax, [esp + 0x84]
push eax
call fcn.10017b6d
mov esi, dword [eax]
or eax, 0xffffffff
mov dword [esp + 0xc], 0xc28ade19
mov dword [esp + 0x28], 0xfff9
mov dword [esp + 0xc], eax
mov dword [esp + 0xc], 0xfffffff7
jmp 0x1001554c
mov dword [esp + 0x28], 0x64dc
mov dword [esp + 0x14], edi
mov dword [esp + 0x20], 0xc13fe66
mov dword [esp + 0x1c], 0x3f5e3d1a
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
neg ecx
sbb ecx, ecx
neg ecx
sub eax, ecx
neg eax
sbb eax, eax
inc eax
cmp dword [esp + 0x28], eax
jl 0x100154dd
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], 0
je 0x100154eb
push 0x2436
push ebx
push ebx
call dword [sym.imp.GDI32.dll_TranslateCharsetInfo]
jmp 0x100154eb
cmp dword [esp + 0xc], ebx
jne 0x10015557
mov dword [esp + 0x20], 0x6c2e7ccc
cmp dword [esp + 0xc], ebx
jne 0x10015508
mov eax, dword [esp + 0x1c]
add eax, 0x28833352
cmp eax, dword [esp + 0x14]
jge 0x10015508
mov ecx, ebx
cmp dword [esp + 0x1c], ebx
je 0x1001550a
mov ecx, edi
mov eax, dword [esp + 0xc]
add ecx, 0x11600d54
xor edx, edx
cmp eax, ecx
setle dl
xor eax, eax
add edx, 9
cmp edx, 0x43ddca27
setl al
mov dword [esp + 0x20], eax
xor eax, eax
mov ecx, dword [esp + 0x1c]
sub ecx, dword [esp + 0x14]
sub ecx, dword [esp + 0x14]
cmp ecx, 0xa6eb
setl al
mov dword [esp + 0x28], eax
dec dword [esp + 0xc]
cmp dword [esp + 0xc], 0xffffffe5
jg 0x1001548c
test esi, esi
je 0x100155f1
mov dword [esp + 0x14], 0x5d6c05ba
mov dword [esp + 0xfc], esi
mov dword [esp + 0x14], ebx
jmp 0x100155e5
push edi
lea ecx, [esp + 0x154]
call fcn.100179d6
mov dword [esp + 0x1c], ebx
jmp 0x1001559d
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x150]
mov dword [eax + ecx*4], 0xeede0b40
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], edi
jl 0x10015587
mov eax, dword [esp + 0x150]
mov dword [eax], 0x1d
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], 0
je 0x100155c7
push ebx
push 0x55c
call dword [sym.imp.USER32.dll_DrawFocusRect]
mov eax, dword [esp + 0x150]
dec dword [eax]
cmp dword [eax], 0xffffffec
jg 0x100155b0
lea ecx, [esp + 0x150]
call fcn.10017a38
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 0x1a
jne 0x10015574
jmp 0x100173b5
push 4
pop eax
push eax
lea ecx, [esp + 0xe4]
call fcn.100179d6
push 3
xor esi, esi
lea ecx, [esp + 0xc0]
pop edi
inc esi
mov dword [esp + 0xb74], edi
push esi
call fcn.100179d6
push 4
mov dword [esp + 0x2c], 8
mov dword [esp + 0x10], ebx
pop edx
jmp 0x10015642
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0xe0]
mov dword [eax + ecx*4], 0xff0e
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edx
jl 0x1001562c
mov dword [esp + 0xc], ebx
jmp 0x10015660
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0xbc]
mov dword [eax + ecx*4], esi
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x1001564e
mov eax, dword [esp + 0xbc]
mov dword [eax], ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x14], 0xfffe
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], 0
je 0x1001569e
push 0x217c
push ebx
push 0x21c7
push 0xc1e
push ebx
push ebx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov dword [esp + 0x1c], edi
cmp dword [esp + 0x1c], ebx
jl 0x100157aa
mov ecx, dword [esp + 0xbc]
mov esi, dword [esp + 0xe0]
mov dword [esp + 0x24], 0x3d4752e4
mov eax, dword [ecx]
cmp dword [esi + eax*4], ebx
je 0x1001576a
or eax, 0xffffffff
xor edx, edx
mov dword [esp + 0x20], eax
mov eax, dword [ecx]
mov dword [esp + 0x24], 0xfffffff7
cmp dword [esi + eax*4], ebx
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0xbc]
setne dl
mov ecx, dword [eax]
mov eax, dword [esp + 0xe0]
mov esi, dword [eax + ecx*4]
xor ecx, ecx
mov eax, dword [esp + 0x14]
cmp edx, eax
setge cl
xor edx, edx
cmp ecx, esi
setle dl
xor eax, eax
cmp edx, esi
setl al
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0xbc]
mov ecx, dword [eax]
mov eax, dword [esp + 0xe0]
mov edx, dword [eax + ecx*4]
xor ecx, ecx
mov eax, dword [esp + 0x24]
dec edx
cmp edx, eax
setle cl
mov dword [esp + 0x24], ecx
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], 0
je 0x1001577d
push ebx
push 0x26d1
push ebx
push 0xe9b
push 0xf
call dword [sym.imp.GDI32.dll_ExtCreatePen]
jmp 0x1001577d
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], 0
je 0x1001577d
push ebx
push ebx
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
xor esi, esi
mov dword [esp + 0x24], ebx
inc esi
cmp dword [esp + 0x24], edi
jg 0x100157a0
mov dword [esp + 0x28], 0x61e33ecd
mov eax, dword [esp + 0x28]
mov dword [esp + 0x28], esi
inc dword [esp + 0x24]
jmp 0x10015784
dec dword [esp + 0x1c]
jns 0x100156ac
mov eax, dword [esp + 0xbc]
inc dword [eax]
cmp dword [eax], edi
jle 0x1001566f
lea ecx, [esp + 0xbc]
call fcn.10017a38
or eax, 0xffffffff
lea ecx, [esp + 0xe0]
mov dword [esp + 0xb74], eax
call fcn.10017a38
mov eax, dword [0x10ae1d68]
test al, 2
jne 0x10015885
or eax, 2
mov dword [0x10ae1d68], eax
push 4
pop eax
push ebx
mov dword [esp + 0xb78], eax
push ebx
mov dword [0x10ae1d40], ebx
mov dword [0x10ae1d44], ebx
call fcn.1001ba31
mov dword [0x10ae1d40], eax
mov dword [0x10ae1d48], ebx
mov dword [0x10ae1d50], ebx
mov byte [esp + 0xb74], 6
mov ecx, 0x10ae1d48
mov dword [esp + 0x110], eax
lea eax, [esp + 0x110]
push eax
push 0x10
push ebx
lea eax, [esp + 0x21c]
mov dword [0x10ae1d5c], 0x3f800000
push eax
mov dword [0x10ae1d4c], ebx
call fcn.1001b809
push 0x10066e39
mov dword [0x10ae1d54], 7
mov dword [0x10ae1d58], 8
call fcn.1004d78c
or eax, 0xffffffff
pop ecx
mov dword [esp + 0xb74], eax
push esi
lea ecx, [esp + 0xb4]
call fcn.100179d6
mov dword [esp + 0x18], ebx
mov dword [esp + 0x20], esi
mov dword [esp + 0x1c], ebx
jmp 0x100158b6
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0xb0]
mov dword [eax + ecx*4], 0x2d5e
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], esi
jl 0x100158a0
mov dword [esp + 0x18], ebx
cmp dword [esp + 0x18], ebx
jl 0x10015a4a
mov dword [esp + 0xc], 0x8fc558ba
mov dword [esp + 0xc], ebx
cmp dword [esp + 0xc], ebx
jl 0x100159ee
or eax, 0xffffffff
mov dword [esp + 0x24], eax
mov dword [esp + 0x24], ebx
cmp dword [esp + 0x24], ebx
jl 0x10015934
mov dword [esp + 0x1c], 0x71867b8f
mov dword [esp + 0x1c], ebx
cmp dword [esp + 0x1c], ebx
jl 0x1001592e
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0xb0]
mov eax, dword [ecx + eax*4]
mov dword [ecx + edx*4], eax
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0xb0]
cmp dword [eax + ecx*4], ebx
jne 0x1001592e
dec dword [esp + 0x1c]
jns 0x10015903
dec dword [esp + 0x24]
jns 0x100158f1
cmp dword [esp + 0x18], ebx
jne 0x10015944
mov dword [esp + 0x20], ebx
cmp dword [esp + 0xc], ebx
je 0x10015948
mov dword [esp + 0x20], esi
mov eax, dword [esp + 0xc]
xor edx, edx
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0xb0]
push 0
cmp ebx, dword [ecx + eax*4]
pop ebx
sete dl
xor eax, eax
add edx, dword [ecx + esi*4]
cmp edx, dword [ecx + edi*4]
mov esi, dword [esp + 0x1c]
setne al
xor edx, edx
cmp eax, 0x725d3672
mov eax, dword [esp + 0x24]
push 1
setle dl
xor ecx, ecx
cmp eax, edx
mov eax, dword [esp + 0x10]
setl cl
xor edx, edx
cmp ecx, eax
mov eax, dword [esp + 0xb4]
mov ecx, dword [esp + 0x2c]
setle dl
imul edx, dword [eax + ecx*4]
xor ecx, ecx
mov eax, dword [esp + 0x10]
cmp edx, 0xaee5a986
setne cl
xor edx, edx
cmp ecx, eax
mov eax, dword [esp + 0xb4]
setle dl
xor ecx, ecx
cmp dword [eax + esi*4], edx
pop esi
setle cl
mov dword [esp + 0x20], ecx
dec dword [esp + 0xc]
jns 0x100158e0
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x18]
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0xb0]
push 1
cmp dword [edi + eax*4], 0x8720725f
mov ecx, dword [edi + ecx*4]
sbb eax, eax
inc eax
sub ecx, eax
imul ecx, dword [edi + edx*4]
mov edx, dword [esp + 0x2c]
imul ecx, dword [edi + esi*4]
pop esi
neg ecx
sbb ecx, ecx
xor eax, eax
neg ecx
cmp ecx, dword [edi + edx*4]
setg al
mov dword [esp + 0x20], eax
dec dword [esp + 0x18]
jns 0x100158ca
push 3
pop edi
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], 0
je 0x10015a72
push ebx
push 0x22f4
push 0x6a2
push ebx
push 0x19a6
push 0x1493
push ebx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
lea ecx, [esp + 0xb0]
call fcn.10017a38
xorps xmm0, xmm0
movdqu xmmword [esp + 0x11c], xmm0
mov dword [esp + 0xc], 0x36951ad3
mov dword [esp + 0x24], ebx
mov dword [esp + 0x18], 0x8dc509ca
mov dword [esp + 0x1c], ebx
jmp 0x10015ab4
mov eax, dword [esp + 0x1c]
mov dword [esp + eax*4 + 0x44], 0xae9714a0
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 2
jl 0x10015aa4
mov dword [esp + 0xc], ebx
jmp 0x10015c1a
or eax, 0xffffffff
mov dword [esp + 0x1c], eax
mov dword [esp + 0x28], ebx
mov dword [esp + 0x14], 0x2f7c629c
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0xc]
cmp dword [esp + eax*4 + 0x44], ebx
jne 0x10015aed
mov eax, dword [esp + 0xc]
mov eax, dword [esp + eax*4 + 0x44]
mov eax, dword [esp + 0xc]
xor edx, edx
mov ecx, dword [esp + eax*4 + 0x44]
mov eax, dword [esp + 0x48]
cmp eax, ecx
setge dl
mov dword [esp + 0x28], edx
xor edx, edx
mov eax, dword [esp + 0xc]
mov dword [esp + 0x1c], 0xbf0ddd9c
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x14]
cmp eax, ecx
mov eax, dword [esp + 0x14]
setl dl
xor ecx, ecx
sub edx, eax
mov eax, dword [esp + 0x1c]
cmp eax, edx
setne cl
mov dword [esp + 0x24], ecx
mov eax, dword [esp + 0x24]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + eax*4 + 0x44]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x44]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + eax*4 + 0x44]
add eax, dword [esp + 0x14]
add eax, dword [esp + 0x14]
je 0x10015ba3
mov dword [esp + 0x28], 0xe5fef407
mov edx, 0x14fac
mov eax, dword [esp + 0x1c]
xor ecx, ecx
sub edx, eax
sub edx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
cmp eax, edx
setne cl
cmp ecx, esi
jbe 0x10015b90
mov edx, esi
cmp dword [esp + 0x44], ebx
jne 0x10015b92
mov edx, ebx
mov eax, dword [esp + 0x20]
xor ecx, ecx
cmp edx, eax
setle cl
mov dword [esp + 0x1c], ecx
jmp 0x10015c16
mov dword [esp + 0x20], 0x469f41af
inc dword [esp + 0x20]
mov dword [esp + 0x24], esi
cmp dword [esp + 0x24], ebx
jl 0x10015c16
mov eax, dword [esp + 0xc]
cmp dword [esp + eax*4 + 0x44], ebx
jne 0x10015c16
mov dword [esp + 0x18], esi
cmp dword [esp + 0x18], ebx
jl 0x10015c10
mov dword [esp + 0x20], esi
mov dword [esp + 0x1c], ebx
jmp 0x10015be6
mov eax, dword [esp + 0x1c]
mov dword [esp + eax*4 + 0x1e4], edi
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 2
jl 0x10015bd7
mov eax, dword [esp + 0x14]
xor ecx, ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
cmp eax, 0xb92a1dd6
setne cl
mov dword [esp + 0x1e8], ecx
dec dword [esp + 0x18]
jns 0x10015bcd
dec dword [esp + 0x24]
jns 0x10015bb9
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jle 0x10015ac4
mov dword [esp + 0x18], 0xffffffe2
jmp 0x10015c52
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], 0
je 0x10015c4e
push 0x1bd
push 0xc55
push 0x1f27
call dword [sym.imp.GDI32.dll_LineTo]
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 0xfffffffe
jge 0x10015c2e
lea eax, [esp + 0x60]
push eax
call fcn.10017bcf
mov edi, dword [eax]
mov dword [esp + 0x28], 0x1b0a
cmp dword [esp + 0x28], 0x508
mov dword [esp + 0x1c], edi
jge 0x10015e34
lea eax, [esp + 0xac]
push eax
push 0x100099f4
call fcn.1004d23b
cmp dword [esp + 0xb4], 0
pop ecx
pop ecx
mov dword [esp + 0x14], ebx
jle 0x10015e34
lea eax, [esp + 0x118]
push eax
lea eax, [esp + 0x60]
push eax
push 0x10009a80
call fcn.1004d23b
mov ecx, dword [esp + 0x68]
add esp, 0xc
mov edi, ebx
test ecx, ecx
jle 0x10015ced
push 4
lea esi, [esp + 0x254]
pop ebx
push esi
push 0x100099f4
call fcn.1004d23b
pop ecx
pop ecx
mov ecx, dword [esp + 0x5c]
inc edi
add esi, ebx
cmp edi, ecx
jl 0x10015cd3
xor ebx, ebx
mov esi, ebx
test ecx, ecx
jle 0x10015d3a
movsd xmm0, qword [0x10009f98]
push ecx
push ecx
movsd qword [esp], xmm0
call fcn.1004db40
movd xmm1, dword [esp + esi*4 + 0x258]
cvtdq2pd xmm1, xmm1
pop ecx
pop ecx
mov ecx, dword [esp + 0x5c]
fstp qword [esp + 0x30]
movapd xmm0, xmm1
mulsd xmm0, qword [esp + 0x30]
mulsd xmm0, xmm1
movsd qword [esp + esi*8 + 0x558], xmm0
inc esi
cmp esi, ecx
jl 0x10015cf3
movsd xmm1, qword [0x10009f78]
xorps xmm0, xmm0
push 0x2d
pop edx
movsd qword [esp + 0xa0], xmm0
movsd qword [esp + 0xc8], xmm1
mov dword [esp + 0x20], edx
addsd xmm1, xmm0
mov edi, ebx
mov esi, ebx
mulsd xmm1, qword [0x10009f40]
movsd qword [esp + 0x30], xmm1
test ecx, ecx
jle 0x10015dcb
movsd xmm0, qword [esp + esi*8 + 0x558]
divsd xmm0, xmm1
push ecx
push ecx
movsd qword [esp], xmm0
call fcn.1004dc90
movsd xmm1, qword [esp + 0x38]
inc esi
movd xmm0, edi
cvtdq2pd xmm0, xmm0
pop ecx
pop ecx
mov ecx, dword [esp + 0x5c]
movsd qword [esp + 0x78], xmm0
fadd qword [esp + 0x78]
fstp qword [esp + 0x78]
cvttsd2si edi, qword [esp + 0x78]
cmp esi, ecx
jl 0x10015d78
movsd xmm0, qword [esp + 0xa0]
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x118]
inc eax
cmp edi, eax
jl 0x10015def
movapd xmm0, xmm1
movsd xmm1, qword [esp + 0xc8]
movsd qword [esp + 0xa0], xmm0
jmp 0x10015df8
movsd qword [esp + 0xc8], xmm1
dec edx
mov dword [esp + 0x20], edx
jne 0x10015d5e
push ecx
push ecx
movsd qword [esp], xmm0
push 0x10009a88
call fcn.1004d7b6
mov esi, dword [esp + 0x20]
add esp, 0xc
inc esi
mov dword [esp + 0x14], esi
cmp esi, dword [esp + 0xac]
jl 0x10015ca5
mov edi, dword [esp + 0x1c]
xor esi, esi
inc esi
mov dword [esp + 0x28], 0xc5a654fd
mov dword [esp + 0x14], ebx
jmp 0x10015e55
mov eax, dword [esp + 0x14]
mov dword [esp + eax*4 + 0x16c], 0x1f2c
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 2
jl 0x10015e42
mov eax, dword [esp + 0x170]
sub eax, dword [esp + 0x170]
mov dword [esp + 0x28], eax
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], 0
je 0x10015e81
push ebx
push ebx
call dword [sym.imp.USER32.dll_LoadMenuW]
cmp byte [ebp + 0xc], 0
jne 0x10015e8f
test edi, edi
jne 0x100161a6
push 0xfffffffffffffffe
mov dword [esp + 0x18], 0x960f57a7
pop edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], 0x355c0c8f
mov dword [esp + 0xc], ebx
jmp 0x10015ebf
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0xd4], 0x7862
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 2
jl 0x10015eac
mov dword [esp + 0xc], ebx
jmp 0x10015edf
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x1ec], 0xfffffffd
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 2
jl 0x10015ecc
mov dword [esp + 0x14], esi
cmp dword [esp + 0x14], ebx
jl 0x10015fec
mov dword [esp + 0xc], 0x8974b66
mov dword [esp + 0xc], esi
cmp dword [esp + 0xc], ebx
jl 0x10015fd7
push 5
pop ebx
mov dword [esp + 0x20], 0x335c0de4
xor edx, edx
mov dword [esp + 0x28], edi
mov dword [esp + 0x28], 0xfffffffc
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + eax*4 + 0xd4]
mov eax, dword [esp + 0xd4]
cmp ecx, eax
setl dl
mov dword [esp + 0x20], edx
xor edx, edx
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0xc]
cmp eax, ecx
setg dl
xor eax, eax
cmp edx, 0xcb0b
setle al
imul eax, dword [esp + 0x24]
cmp ebx, eax
mov eax, dword [esp + 0xc]
sbb edx, edx
xor ecx, ecx
add edx, 0x240b2086
cmp edx, eax
setle cl
cmp ecx, 0xfff6
sbb eax, eax
xor ecx, ecx
inc eax
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, esi
setg cl
mov dword [esp + 0x28], ecx
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + eax*4 + 0xd4]
sub ecx, dword [esp + 0x14]
sub ecx, dword [esp + 0x1f0]
mov eax, dword [esp + 0x24]
neg ecx
sbb ecx, ecx
xor edx, edx
inc ecx
cmp ecx, eax
mov eax, dword [esp + 0xc]
setl dl
xor ecx, ecx
cmp edx, eax
setle cl
mov dword [esp + 0x28], ecx
dec dword [esp + 0xc]
jns 0x10015f0d
xor ebx, ebx
mov eax, dword [esp + 0x14]
mov eax, dword [esp + eax*4 + 0xd4]
dec dword [esp + 0x14]
jns 0x10015ef4
mov dl, byte [ebp + 0xc]
lea eax, [esp + 0x240]
mov ecx, dword [esp + 0x60]
push eax
call fcn.1000b69c
mov esi, eax
lea edi, [esp + 0x120]
pop ecx
lea ecx, [esp + 0x1b0]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
xor esi, esi
inc esi
push esi
call fcn.100179d6
mov dword [esp + 0x20], 0x643b8a27
mov dword [esp + 0x20], 0x4dde9ab
mov dword [esp + 0x20], 0xfffffffa
mov dword [esp + 0x28], ebx
mov dword [esp + 0xc], ebx
jmp 0x10016052
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x1b0]
mov dword [eax + ecx*4], esi
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x10016040
mov dword [esp + 0xc], ebx
jmp 0x1001606d
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x88], esi
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x1001605e
push 4
mov dword [esp + 0x10], ebx
pop ecx
jmp 0x1001608f
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x220], 0x40424b96
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ecx
jl 0x1001607c
mov eax, dword [esp + 0x1b0]
cmp dword [eax], ebx
jne 0x100160ab
mov eax, ebx
cmp dword [esp + 0x88], esi
jl 0x100160ad
mov eax, esi
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
neg eax
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
cmp dword [esp + 0x88], 0xa0b59785
sbb eax, eax
neg eax
mov dword [esp + 0x220], eax
add eax, 0xfffc
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x28], eax
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], 0
je 0x100160fe
push ebx
push 0x20e9
push ebx
call dword [sym.imp.GDI32.dll_ExtCreateRegion]
lea ecx, [esp + 0x1b0]
call fcn.10017a38
cmp byte [ebp + 0xc], 0
je 0x100161a2
cmp dword [esp + 0x124], 0
je 0x100161a2
push esi
lea ecx, [esp + 0x190]
call fcn.100179d6
push 6
pop eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x30], esi
mov dword [esp + 0x14], ebx
jmp 0x10016152
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x18c]
mov dword [eax + ecx*4], esi
inc dword [esp + 0x14]
cmp dword [esp + 0x14], esi
jl 0x10016140
mov dword [esp + 0x14], ebx
jmp 0x10016174
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x18c]
mov dword [eax + ecx*4], 0x53606de7
inc dword [esp + 0x14]
cmp dword [esp + 0x14], esi
jl 0x1001615e
lea ecx, [esp + 0x18c]
call fcn.10017a38
mov eax, dword [esp + 0x128]
mov dword [esp + 0x100], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x104], eax
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x28], ebx
lea ecx, [esp + 0x204]
mov dword [esp + 0x14], 0x185a1fa1
mov dword [esp + 0x30], 0xf95751cf
mov dword [esp + 0x30], esi
mov dword [esp + 0x30], 0x6f1860ec
push 2
call fcn.100179d6
mov dword [esp + 0x20], 0x158fb5c4
mov dword [esp + 0xc], ebx
jmp 0x100161f8
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x204]
mov dword [eax + ecx*4], 0xfffffff9
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 2
jl 0x100161e2
mov dword [esp + 0xc], ebx
jmp 0x10016218
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x1f4], 0xffffffff
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x10016205
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x204]
mov dword [esp + 0x14], 0xfffefffe
dec dword [esp + 0x20]
call fcn.10017a38
test edi, edi
jne 0x10017024
cmp dword [esp + 0x11c], edi
jle 0x10017024
push 2
lea ecx, [esp + 0x1a8]
call fcn.100179d6
mov dword [esp + 0x20], 0x72cb566e
or eax, 0xffffffff
mov dword [esp + 0x28], esi
mov dword [esp + 0xc], 0xcddcdedc
push 4
mov dword [esp + 0x2c], eax
mov dword [esp + 0x10], ebx
pop ecx
jmp 0x10016291
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x4c], 0xc85f70ad
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ecx
jl 0x10016281
mov dword [esp + 0xc], ebx
jmp 0x100162b3
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x1a4]
mov dword [eax + ecx*4], 0x20f89b54
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 2
jl 0x1001629d
push 3
mov dword [esp + 0x10], ebx
pop ecx
jmp 0x100162d6
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x214], 0x7cf3d009
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ecx
jl 0x100162c3
mov esi, dword [esp + 0x1a4]
mov dword [esi + 4], ecx
mov eax, dword [esi + 4]
mov dword [esp + 0x14], 0xef874ac
mov dword [esp + 0x18], 0xfffffffc
mov dword [esp + 0x24], 0xfffffffb
cmp dword [esp + eax*4 + 0x4c], ebx
je 0x1001636e
mov eax, dword [esi + 4]
xor edx, edx
mov eax, dword [esp + eax*4 + 0x4c]
mov eax, dword [esi + 4]
mov eax, dword [esp + eax*4 + 0x4c]
mov eax, dword [esi + 4]
mov eax, dword [esp + eax*4 + 0x4c]
mov eax, dword [esi + 4]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 4]
mov ecx, dword [esp + eax*4 + 0x4c]
mov eax, dword [esp + 0x14]
cmp ecx, eax
mov eax, dword [esi + 4]
setne dl
mov dword [esp + 0x18], edx
mov eax, dword [esp + eax*4 + 0x4c]
mov ecx, dword [esp + 0x18]
sub ecx, eax
mov eax, dword [esi + 4]
mov eax, dword [esp + eax*4 + 0x4c]
imul eax, ecx
test eax, eax
je 0x10016358
mov eax, dword [esp + 0x18]
mov eax, dword [esi + 4]
mov eax, dword [esp + eax*4 + 0x4c]
mov eax, dword [esi + 4]
cmp dword [esp + eax*4 + 0x4c], 1
jg 0x1001636e
xor ecx, ecx
inc ecx
jmp 0x10016370
mov ecx, ebx
mov eax, dword [esi + 4]
cmp ecx, dword [esp + eax*4 + 0x4c]
je 0x10016382
cmp dword [esi + 4], ebx
jne 0x10016382
mov ecx, ebx
jmp 0x10016385
xor ecx, ecx
inc ecx
mov eax, dword [esp + 0x54]
add eax, ecx
jne 0x10016391
mov eax, dword [esp + 0x14]
mov eax, dword [esi + 4]
mov eax, dword [esp + eax*4 + 0x4c]
mov ecx, dword [esp + 0x58]
mov eax, dword [esi + 4]
mov dword [esp + eax*4 + 0x4c], ecx
test ecx, ecx
jne 0x100163ab
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], 0xc7e7c0ce
mov dword [esp + 0x24], ebx
jmp 0x10016446
mov eax, dword [esp + 0x24]
xor ecx, ecx
mov eax, dword [esp + eax*4 + 0x4c]
mov eax, dword [esp + 0x218]
cmp eax, 0x7fba
mov eax, dword [esi + 4]
setg cl
mov dword [esp + 0x28], ecx
cmp dword [esp + eax*4 + 0x4c], 0x230988a2
jge 0x100163f1
cmp dword [esp + 0x24], ebx
je 0x100163f1
xor ecx, ecx
inc ecx
jmp 0x100163f3
mov ecx, ebx
mov eax, dword [esp + 0x14]
xor edx, edx
imul eax, ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
cmp eax, 0xffffffff
mov eax, dword [esp + 0x50]
setle dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [esi + 4]
setle cl
mov dword [esp + 0xc], ecx
mov eax, dword [esp + eax*4 + 0x4c]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x20]
mov eax, dword [esi + 4]
mov eax, dword [esp + eax*4 + 0x4c]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
mov eax, dword [esi + 4]
mov eax, dword [esp + eax*4 + 0x4c]
mov dword [esp + 0x28], eax
inc dword [esp + 0x24]
cmp dword [esp + 0x24], 3
jle 0x100163bc
dec dword [esi + 4]
jns 0x100162e6
mov dword [esp + 0xc], 7
lea ecx, [esp + 0x1a4]
call fcn.10017a38
mov dword [esp + 0x24], 0xac204e2
xor esi, esi
mov dword [esp + 0x20], 0xb17d72b9
inc esi
mov dword [esp + 0xc], 0x932384b6
mov dword [esp + 0x28], 0xec76e8d2
mov dword [esp + 0x18], 0x584e2bba
push 5
mov dword [esp + 0x30], esi
pop eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x14], ebx
jmp 0x100164ba
mov eax, dword [esp + 0x14]
mov dword [esp + eax*4 + 0x68], 0x7b69c93e
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 3
jl 0x100164aa
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], 0
je 0x100164de
push 0x1d17
push ebx
push 0x12c
push ebx
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov dword [esp + 0x24], 0xfffffffd
cmp dword [esp + 0x24], 0xb
jne 0x1001681a
mov dword [esp + 0x20], 9
mov dword [esp + 0xc], ebx
jmp 0x1001650f
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x38], 0x974a
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 3
jl 0x100164ff
push 4
mov dword [esp + 0x10], ebx
pop edi
jmp 0x10016532
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x230], 0x39b7b3fa
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edi
jl 0x1001651f
mov eax, dword [esp + 0x3c]
mov eax, dword [esp + 0x40]
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x6c], ebx
jne 0x1001654e
mov eax, dword [esp + 0x3c]
mov eax, dword [esp + 0x6c]
xor edx, edx
cmp eax, esi
mov eax, dword [esp + 0x6c]
setl dl
xor ecx, ecx
cmp edx, eax
mov eax, 0xac30bca0
sete cl
cmp eax, ecx
mov eax, dword [esp + 0x70]
sbb ecx, ecx
xor edx, edx
neg ecx
cmp ecx, eax
mov eax, dword [esp + 0x38]
setle dl
xor ecx, ecx
cmp edx, eax
setge cl
xor eax, eax
cmp ecx, 5
setne al
imul eax, eax, 0xffff336f
mov dword [esp + 0xc], eax
cmp dword [esp + 0xc], ebx
je 0x100165a1
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov eax, dword [esp + 0x68]
mov eax, dword [esp + 0x3c]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x24]
mov eax, dword [esp + 0x6c]
cmp dword [esp + 0x38], ebx
je 0x100165cb
mov eax, dword [esp + 0x40]
mov eax, dword [esp + 0x6c]
mov eax, dword [esp + 0x38]
mov eax, dword [esp + 0x18]
cmp dword [esp + 0x28], eax
jl 0x100165e1
mov eax, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x18]
sub ecx, eax
je 0x100166d3
mov dword [esp + 0x20], 0x9aeb8efb
mov dword [esp + 0xc], 2
cmp dword [esp + 0xc], ebx
jl 0x10016807
mov dword [esp + 0x20], 0xe1d77f59
mov dword [esp + 0x20], 0xfffffff8
mov eax, dword [esp + 0xc]
mov eax, dword [esp + eax*4 + 0x68]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + eax*4 + 0x68]
mov dword [esp + 0x238], eax
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + eax*4 + 0x68]
mov eax, dword [esp + 0x2c]
imul eax, dword [esp + 0x24], 0xb6ad
cmp eax, 0xfffffff9
jg 0x1001665b
mov eax, dword [esp + 0x3c]
mov eax, dword [esp + 0xc]
cmp dword [esp + eax*4 + 0x68], ebx
je 0x1001666d
mov eax, esi
cmp dword [esp + 0x6c], ebx
jne 0x1001666f
mov eax, ebx
xor edx, edx
cmp eax, 0x24b34d7a
mov eax, dword [esp + 0x3c]
setg dl
xor ecx, ecx
cmp edx, eax
setl cl
mov dword [esp + 0x20], ecx
xor ecx, ecx
mov eax, dword [esp + 0xc]
mov edx, dword [esp + eax*4 + 0x68]
mov eax, dword [esp + 0x20]
cmp eax, 0x19dd
setg cl
xor eax, eax
cmp ecx, edx
setl al
xor edx, edx
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x20]
cmp eax, ecx
setge dl
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x20], eax
dec dword [esp + 0xc]
jns 0x1001660f
jmp 0x10016807
mov dword [esp + 0x18], ebx
jmp 0x100167fc
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], 0
je 0x100166f3
push 0x3d7
push ebx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
mov byte [esp + 0x13], bl
mov dword [esp + 0x20], 0x16e6
cmp dword [esp + 0x20], 0x774
jge 0x100167da
lea eax, [esp + 0x108]
push eax
lea eax, [esp + 0x68]
push eax
push 0x10009a80
call fcn.1004d23b
mov eax, dword [esp + 0x70]
xor ecx, ecx
add esp, 0xc
mul edi
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.10046e62
mov esi, eax
mov dword [esp + 0x24], ebx
mov eax, dword [esp + 0x68]
mov dword [esp + 0x18], esi
pop ecx
test eax, eax
jle 0x10016772
push 4
mov edi, esi
pop esi
push edi
push 0x100099f4
call fcn.1004d23b
mov eax, dword [esp + 0x6c]
inc ebx
pop ecx
add edi, esi
pop ecx
cmp ebx, eax
jl 0x10016754
mov esi, dword [esp + 0x14]
xor ebx, ebx
lea edx, [esi + eax*4]
mov byte [esp + 0x10c], bl
push dword [esp + 0x10c]
mov eax, edx
mov ecx, esi
sub eax, esi
sar eax, 2
push eax
call fcn.1001cbc8
mov edi, dword [esp + 0x110]
mov edx, dword [esp + 0x6c]
pop ecx
pop ecx
cmp edi, edx
jg 0x100167c9
lea eax, [edx - 1]
cmp edi, eax
jge 0x100167b7
mov ecx, edx
sub ecx, edi
mov eax, dword [esi + ecx*4]
cmp eax, dword [esi + ecx*4 - 4]
je 0x100167c9
sub edx, edi
push dword [esi + edx*4]
push 0x10009a94
call fcn.1004d7b6
pop ecx
jmp 0x100167d3
push 0x10009a90
call fcn.1004d7b6
pop ecx
push 4
xor esi, esi
pop edi
inc esi
cmp byte [esp + 0x13], 0
je 0x100167f8
push 0x24d0
push 0x246
push esi
push ebx
push 0x6e2
call dword [sym.imp.USER32.dll_MsgWaitForMultipleObjects]
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 0x39
jle 0x100166dc
inc dword [esp + 0x24]
cmp dword [esp + 0x24], 0xb
je 0x100164f1
mov edi, dword [esp + 0x1c]
or eax, 0xffffffff
mov dword [esp + 0xc], 0x84b81147
mov dword [esp + 0x18], eax
mov ecx, esi
mov dword [esp + 0x28], ebx
mov eax, dword [esp + 0x18]
sub ecx, eax
je 0x1001683d
cmp dword [esp + 0xc], ebx
jne 0x10016841
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
xor edx, edx
mov eax, dword [esp + 0xc]
cmp eax, 0xffffffff
mov eax, dword [esp + 0xc]
setl dl
xor ecx, ecx
cmp eax, edx
setle cl
or eax, 0xffffffff
cmp ecx, eax
mov eax, dword [esp + 0xc]
sbb edx, edx
xor ecx, ecx
neg edx
cmp edx, eax
setge cl
mov dword [esp + 0xc], ecx
mov ecx, esi
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
cmp dword [esp + 0x18], ebx
jne 0x1001688a
mov ecx, ebx
mov eax, dword [esp + 0x18]
add eax, 0xffff
cmp eax, ecx
jg 0x100168b6
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], 0
je 0x10016975
push 0x254e
call dword [sym.imp.USER32.dll_ShowCaret]
jmp 0x10016975
mov dword [esp + 0x20], 0xfffffffa
mov dword [esp + 0x18], 0xfffffff1
jmp 0x1001696a
mov dword [esp + 0x2c], 0x99db2213
mov dword [esp + 0xc], ebx
jmp 0x1001692f
push 2
lea ecx, [esp + 0x1c0]
call fcn.100179d6
mov dword [esp + 0x14], ebx
jmp 0x10016903
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x1bc]
mov dword [eax + ecx*4], 0x47cd
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 2
jl 0x100168ed
mov dword [esp + 0x20], 0xfffffffd
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x1bc]
mov dword [eax], ecx
lea ecx, [esp + 0x1bc]
call fcn.10017a38
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 8
jge 0x100168d9
mov dword [esp + 0xc], 0xffffffe4
jmp 0x1001695f
mov dword [esp + 0x20], esi
mov eax, dword [esp + 0x2c]
mov eax, dword [esp + 0x20]
cmp dword [esp + 0x20], 0xffff
sbb eax, eax
inc eax
mov dword [esp + 0x28], eax
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 0xffffffe8
jge 0x10016940
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 0xb
jne 0x100168cb
or eax, 0xffffffff
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], 0x2426f379
mov dword [esp + 0x14], ebx
cmp dword [esp + 0x14], 2
jge 0x100169ac
mov eax, dword [esp + 0x14]
mov dword [esp + eax*4 + 0x8c], 0xfd5464b5
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 2
jl 0x1001698f
or eax, 0xffffffff
mov dword [esp + 0x24], ebx
jmp 0x10016a6d
mov dword [esp + 0x18], 6
mov dword [esp + 0x20], 0xa955a63a
mov dword [esp + 0x2c], eax
mov dword [esp + 0x18], esi
cmp dword [esp + 0x18], ebx
jl 0x10016a69
mov dword [esp + 0x20], esi
xor edx, edx
mov eax, dword [esp + 0x18]
mov eax, dword [esp + eax*4 + 0x8c]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + eax*4 + 0x8c]
imul eax, dword [esp + 0x18], 0x23948622
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + eax*4 + 0x8c]
add ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
mov eax, dword [esp + eax*4 + 0x8c]
cmp eax, ecx
setge dl
sub edx, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
neg edx
sbb edx, edx
add edx, 0x137f0de8
neg edx
sbb edx, edx
inc edx
imul edx, dword [esp + eax*4 + 0x8c]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], esi
mov eax, dword [esp + 0x14]
dec eax
mov dword [esp + 0x2c], eax
cmp dword [esp + 0x20], ebx
jne 0x10016a66
dec dword [esp + 0x18]
jns 0x100169d7
or eax, 0xffffffff
inc dword [esp + 0x24]
cmp dword [esp + 0x24], esi
jle 0x100169b5
mov dword [esp + 0x14], 0xfffffff6
lea ecx, [esp + 0x144]
mov dword [esp + 0x30], 0xfa5c62e0
mov dword [esp + 0x24], 0x11151
mov dword [esp + 0x18], ebx
mov dword [esp + 0xdc], 0x4dcc80fc
mov dword [esp + 0x78], 0xaf5bfb66
mov dword [esp + 0xa0], eax
push 2
call fcn.100179d6
mov dword [esp + 0xb74], 7
or eax, 0xffffffff
mov dword [esp + 0x20], esi
push 2
mov dword [esp + 0xa4], eax
mov dword [esp + 0x1c], ebx
pop edx
jmp 0x10016aec
mov eax, dword [esp + 0x18]
mov dword [esp + eax*4 + 0x164], esi
inc dword [esp + 0x18]
cmp dword [esp + 0x18], edx
jl 0x10016add
mov dword [esp + 0x18], ebx
jmp 0x10016b0e
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x144]
mov dword [eax + ecx*4], 0xfffffff9
inc dword [esp + 0x18]
cmp dword [esp + 0x18], edx
jl 0x10016af8
mov dword [esp + 0x14], ebx
cmp dword [esp + 0x14], 0x15
jne 0x10016cef
or edi, 0xffffffff
mov dword [esp + 0x28], esi
lea ecx, [esp + 0x1d4]
mov dword [esp + 0x28], 0x7963ba20
mov dword [esp + 0xc8], 0x649f6d4a
mov dword [esp + 0x18], esi
push esi
call fcn.100179d6
mov dword [esp + 0x2c], 0x4840c2c
mov dword [esp + 0x24], 0x89098934
mov dword [esp + 0x24], esi
mov dword [esp + 0xc], ebx
jmp 0x10016b7b
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x114], 0xfffffff8
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x10016b68
mov dword [esp + 0xc], ebx
jmp 0x10016b9d
cmp dword [esp + 0xc], esi
jl 0x10016b87
or eax, 0xffffffff
lea ecx, [esp + 0x144]
mov dword [esp + 0xb74], eax
call fcn.10017a38
mov ecx, dword [esp + 0x120]
test ecx, ecx
je 0x10017024
call fcn.1001528a
mov dword [esp + 0xc], 0x13dd33a4
lea ecx, [esp + 0x138]
push esi
mov edi, eax
call fcn.100179d6
push 8
pop eax
mov dword [esp + 0xb74], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], esi
mov dword [esp + 0x30], 0xfffffff6
mov dword [esp + 0x1c], ebx
jmp 0x10016d66
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x138]
mov dword [eax + ecx*4], 0x3690f1d8
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], esi
jl 0x10016d50
mov dword [esp + 0xc], ebx
jmp 0x10016d82
lea ecx, [esp + 0x11c]
call fcn.10011a0c
test edi, edi
je 0x100172a9
push 4
pop esi
mov dword [esp + 0xc], 0x7ddc85f7
lea ecx, [esp + 0x198]
push esi
call fcn.100179d6
mov dword [esp + 0x28], 3
or edx, 0xffffffff
mov dword [esp + 0x30], 0xb28787d6
mov dword [esp + 0x1c], ebx
cmp dword [esp + 0x1c], esi
jge 0x10017081
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x198]
mov dword [eax + ecx*4], edx
inc dword [esp + 0x1c]
jmp 0x10017067
mov dword [esp + 0xc], ebx
cmp dword [esp + 0xc], 0xfffffff4
jg 0x1001712b
mov esi, dword [esp + 0x198]
mov dword [esp + 0x1c], 0xfffffffb
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0xc]
cmp eax, edx
je 0x100170b6
cmp dword [esp + 0x1c], ebx
je 0x100170b6
mov edx, ebx
jmp 0x100170b9
xor edx, edx
inc edx
mov eax, dword [esp + 0x1c]
xor ecx, ecx
cmp eax, edx
mov dword [esi + 8], edx
mov eax, dword [esp + 0xc]
setl cl
add eax, 0xb7c7008b
add ecx, eax
xor edx, edx
mov eax, dword [esp + 0xc]
cmp ecx, eax
mov eax, dword [esp + 0xc]
setge dl
xor ecx, ecx
cmp edx, eax
push 0xffffffffffffffff
setl cl
xor edx, edx
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x2c]
sub ecx, eax
mov eax, dword [esp + 0x10]
cmp ecx, eax
setge dl
sub edx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
neg edx
sbb edx, edx
xor ecx, ecx
inc edx
cmp edx, eax
pop edx
setl cl
mov dword [esp + 0x30], ecx
dec dword [esp + 0xc]
cmp dword [esp + 0xc], 0xfffffff4
jle 0x10017097
lea ecx, [esp + 0x198]
call fcn.10017a38
mov edx, dword [esp + 0x74]
mov ecx, edi
call fcn.100152b6
xor edi, edi
lea ecx, [esp + 0x94]
inc edi
mov esi, eax
push edi
mov dword [esp + 0x100], esi
call fcn.100179d6
mov dword [esp + 0x28], 0x61d594d0
mov dword [esp + 0x74], 0x6b9c2d62
mov dword [esp + 0x18], ebx
jmp 0x10017184
mov eax, dword [esp + 0x18]
mov dword [esp + eax*4 + 0xec], 0xd7f825e7
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 3
jl 0x10017171
mov dword [esp + 0x18], ebx
jmp 0x100171a3
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x94]
mov dword [eax + ecx*4], edi
inc dword [esp + 0x18]
cmp dword [esp + 0x18], edi
jl 0x10017191
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], 0
je 0x100171d8
push 0x157e
push 0x9e1
push 0x6d4
push 0x878
push 0x1f71
push 0x14bb
call dword [sym.imp.GDI32.dll_PatBlt]
mov eax, dword [esp + 0x94]
mov dword [eax], 2
mov eax, dword [eax]
xor ecx, ecx
sub eax, 0x160c
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0xf4]
cmp eax, 0xbe13
mov eax, dword [esp + 0x28]
setle cl
xor edx, edx
cmp ecx, eax
mov eax, dword [esp + 0x94]
setg dl
xor ecx, ecx
mov eax, dword [eax]
mov eax, dword [esp + eax*4 + 0xec]
add edx, eax
mov eax, dword [esp + 0x94]
mov eax, dword [eax]
mov eax, dword [esp + eax*4 + 0xec]
cmp edx, eax
mov eax, dword [esp + 0x94]
sete cl
xor edx, edx
add ecx, 0xffffbb3d
mov eax, dword [eax]
mov eax, dword [esp + eax*4 + 0xec]
cmp ecx, eax
mov eax, dword [esp + 0x94]
setne dl
xor ecx, ecx
mov eax, dword [eax]
mov eax, dword [esp + eax*4 + 0xec]
cmp eax, edx
setg cl
mov dword [esp + 0x74], ecx
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], 0
je 0x1001727f
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0x94]
dec dword [eax]
jns 0x100171e5
lea ecx, [esp + 0x94]
call fcn.10017a38
lea eax, [esp + 0x84]
push eax
call fcn.10017b6d
mov dword [eax], esi
push 4
pop edi
push edi
lea ecx, [esp + 0x184]
call fcn.100179d6
mov dword [esp + 0xc], ebx
or edx, 0xffffffff
mov dword [esp + 0x1c], ebx
cmp dword [esp + 0x1c], edi
jge 0x100172de
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x180]
mov dword [eax + ecx*4], edx
inc dword [esp + 0x1c]
jmp 0x100172c4
push 3
pop esi
mov dword [esp + 0xc], esi
cmp dword [esp + 0xc], ebx
jl 0x100173a9
mov dword [esp + 0x24], ebx
mov dword [esp + 0x14], edx
mov dword [esp + 0x24], ebx
cmp dword [esp + 0x24], esi
jg 0x1001739f
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x180]
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x14], eax
mov dword [esp + 0x14], 0x15
jmp 0x10017387
mov dword [esp + 0x18], edi
mov dword [esp + 0x18], ebx
jmp 0x1001736a
mov dword [esp + 0x1c], ebx
cmp dword [esp + 0x1c], ebx
jne 0x10017370
mov dword [esp + 0x1c], ebx
jmp 0x10017360
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], 0
je 0x1001735c
push ebx
push 0x1593
push 0xb7a
push 0x216c
call dword [sym.imp.GDI32.dll_SetPixel]
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], esi
jle 0x1001733b
inc dword [esp + 0x18]
cmp dword [esp + 0x18], esi
jle 0x1001732b
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], 0
je 0x10017383
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 0x16
jle 0x10017321
inc dword [esp + 0x24]
cmp dword [esp + 0x24], esi
jle 0x10017305
or edx, 0xffffffff
dec dword [esp + 0xc]
jns 0x100172ef
lea ecx, [esp + 0x180]
call fcn.10017a38
mov eax, dword [ebp + 8]
lea esi, [esp + 0xfc]
mov ecx, dword [esp + 0xb6c]
mov edi, eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret