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

Disassembly:
sub esp, 0x8a8
push ebx
push ebp
mov ebp, dword [esp + 0x8b4]
test ebp, ebp
mov ebx, edx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x28], ecx
jne 0x5111ea
pop ebp
xor eax, eax
pop ebx
add esp, 0x8a8
ret 8
mov ecx, dword [ebx + 0x6cc]
push esi
push edi
cmp ebp, ecx
je 0x51120b
mov eax, dword [ebp + 0x44]
test eax, eax
je 0x51120b
mov edx, dword [eax + 8]
cmp edx, dword [ebp + 8]
jne 0x51120b
mov ebp, eax
test ebp, ebp
jne 0x5111f2
mov edx, dword [ebx + 0x6f8]
xor eax, eax
cmp ebp, edx
sete al
lea edx, [esp + 0x4d0]
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x6c], eax
mov eax, dword [ebp]
sub edx, eax
lea esp, [esp]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x511230
mov ecx, dword [ebp + 0x40]
test ecx, ecx
lea eax, [ebp + 0x40]
mov dword [esp + 0x14], eax
je 0x5112f3
lea esp, [esp]
mov edx, dword [ebp + 8]
cmp edx, dword [ecx + 8]
jne 0x5112f3
mov ebp, ecx
mov eax, dword [ebp + 0x10]
test eax, eax
mov edx, dword [ebp]
jle 0x511288
cmp byte [edx], 0x20
jne 0x51127e
lea ecx, [ecx]
test eax, eax
jle 0x51127e
mov cl, byte [edx + 1]
inc edx
dec eax
cmp cl, 0x20
je 0x511270
cmp byte [edx], 0
jne 0x511288
mov edx, 0x5a5348
lea ecx, [esp + 0x4d0]
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x511292
sub ecx, esi
mov esi, ecx
mov ecx, edx
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x5112a2
sub ecx, edi
add ecx, esi
cmp ecx, 0x3b5
ja 0x5112f3
mov ecx, edx
mov al, byte [ecx]
inc ecx
test al, al
jne 0x5112b7
sub ecx, edx
lea edi, [esp + 0x4d0]
mov eax, ecx
dec edi
lea ebx, [ebx]
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x5112d0
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp + 0x40]
test ecx, ecx
jne 0x511250
lea eax, [esp + 0x4d0]
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x511300
sub eax, edx
mov esi, eax
xor edi, edi
cmp esi, edi
jg 0x511333
mov eax, dword [esp + 0x8c0]
mov dword [ebp + 0x14], eax
mov ecx, dword [ebx + 0xa00]
pop edi
pop esi
mov dword [ebp + 0x18], ecx
mov eax, ebp
pop ebp
pop ebx
add esp, 0x8a8
ret 8
mov edx, dword [esp + 0x14]
mov edx, dword [edx]
cmp edx, edi
mov ebp, dword [esp + 0x2c]
je 0x51136a
mov eax, dword [ebp + 8]
cmp eax, dword [edx + 8]
jne 0x51136a
mov ecx, dword [ebx + 0x6cc]
call fcn.004d3ac0
dec dword [ebx + 0x70c]
mov ecx, dword [esp + 0x14]
mov dword [ebx + 0x6cc], eax
mov edx, dword [ecx]
cmp edx, edi
jne 0x511341
mov edx, dword [ebx + 0x70c]
mov ecx, dword [0x5bfd5c]
mov eax, dword [0x5f31e8]
mov dword [esp + 0x7c], edx
mov edx, dword [0x5f31f0]
mov dword [esp + 0x58], ecx
mov ecx, dword [ebp + 8]
mov dword [0x5f31e8], ecx
mov dword [esp + 0x78], eax
mov eax, dword [0x5f3210]
mov dword [esp + 0x5c], edx
mov edx, dword [ebx + 0x6cc]
mov dword [ebx + 0x6cc], edi
mov dword [esp + 0x64], eax
mov eax, dword [ebp + 0xc]
mov dword [0x5bfd5c], eax
mov dword [esp + 0x74], edx
mov edx, dword [ebp + 0x10]
cmp edx, edi
mov dword [0x5f31f0], edx
mov ecx, dword [ebp + 0x20]
mov eax, dword [ebp + 4]
mov dword [esp + 0x4c], ecx
mov dword [0x5f3210], eax
mov byte [esp + 0x90], 0
jle 0x511415
cmp edx, 0x19
jle 0x5113ef
mov edx, 0x19
mov dword [0x5f31f0], edx
mov ecx, edx
mov ebp, ecx
shr ecx, 2
mov eax, 0x20202020
lea edi, [esp + 0x90]
rep stosd dword es:[edi], eax
mov ecx, ebp
and ecx, 3
rep stosb byte es:[edi], al
mov byte [esp + edx + 0x90], 0
xor edi, edi
mov ecx, dword [ebx + 0x98c]
mov ebp, dword [esp + 0x30]
push ecx
push ebp
mov dword [esp + 0x50], edi
mov dword [esp + 0x28], edi
mov dword [esp + 0x5c], edi
mov dword [esp + 0x58], edi
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x40], eax
cmp dword [ebx + 0xdd4], edi
je 0x51144b
mov dword [esp + 0x18], edi
xor eax, eax
jmp 0x51146c
cmp dword [0x5c00ec], edi
jne 0x51145f
cmp dword [ebx + 0xa0c], edi
mov dword [esp + 0x18], edi
je 0x511467
mov dword [esp + 0x18], 1
mov eax, dword [0x5f6594]
cmp eax, edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x3c], 0xffffffff
je 0x51148d
mov edx, dword [ebx + 0x9fc]
mov ecx, ebp
call fcn.0048fb50
mov dword [esp + 0x3c], eax
lea edx, [esp + 0xb0]
push edx
push ebp
call dword [sym.imp.GDI32.dll_GetTextMetricsA]
mov eax, dword [esp + 0xd0]
lea esi, [esp + esi + 0x4d0]
lea edx, [esp + 0x4d0]
cmp edx, esi
lea ecx, [esp + 0x4d0]
mov dword [esp + 0x60], eax
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x38], esi
mov dword [esp + 0x68], edi
mov dword [esp + 0x80], edi
mov dword [esp + 0x84], edi
mov dword [esp + 0x88], edi
jae 0x5118a6
lea esp, [esp]
mov eax, dword [esp + 0x14]
xor ebx, ebx
cmp eax, ebx
jne 0x511513
mov eax, dword [esp + 0x10]
lea edx, [esp + 0xe8]
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x511507
jmp 0x511582
cmp dword [0x5f31f0], ebx
je 0x51156b
xor eax, eax
lea ecx, [ecx]
mov cl, byte [esp + eax + 0x90]
mov byte [esp + eax + 0xe8], cl
inc eax
test cl, cl
jne 0x511520
mov eax, dword [esp + 0x10]
mov edx, eax
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x511540
lea edi, [esp + 0xe8]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x511551
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x511582
mov eax, dword [esp + 0x10]
lea edx, [esp + 0xe8]
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x511578
lea eax, [esp + 0xe8]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x511590
mov esi, dword [0x5bfd5c]
sub eax, edx
cmp esi, ebx
mov edi, eax
mov dword [esp + 0x28], edi
mov dword [esp + 0x44], esi
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x34], ebx
jg 0x511690
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x98c]
push ecx
mov ecx, dword [eax + 0x9fc]
lea edx, [eax + 0x990]
push edx
mov edx, dword [eax + 0x9f4]
push ecx
mov ecx, dword [eax + 0x9f8]
push edx
push ecx
mov ecx, dword [eax + 0x71c]
lea edx, [eax + 0xa04]
push edx
push ecx
push 1
lea edx, [esp + 0x64]
push edx
lea ecx, [esp + 0x6c]
push ecx
lea edx, [esp + 0x68]
push edx
push eax
lea eax, [esp + 0xb8]
push eax
mov eax, dword [esp + 0x8f4]
lea ecx, [esp + 0x88]
push ecx
lea edx, [esp + 0xbc]
push edx
mov edx, dword [esp + 0x6c]
push eax
lea ecx, [esp + 0xa0]
push ecx
push edx
lea eax, [esp + 0xc8]
push eax
lea ecx, [esp + 0xb4]
push ecx
lea edx, [esp + 0x70]
push edx
lea eax, [esp + 0xa4]
push eax
lea ecx, [esp + 0xe4]
push ecx
lea edx, [esp + 0xcc]
push edx
lea eax, [esp + 0x94]
push eax
lea ecx, [esp + 0x80]
push ecx
lea edx, [esp + 0x150]
push edx
lea edx, [esp + 0x84]
lea ecx, [esp + 0x94]
call fcn.005106e0
mov esi, dword [esp + 0x44]
cmp esi, edi
jg 0x511696
jl 0x51169f
mov eax, dword [esp + 0x38]
jmp 0x51185e
cmp esi, 1
jge 0x5116a9
mov esi, 1
mov ebx, dword [esp + 0x20]
dec esi
mov eax, esi
cdq
and edx, 3
add eax, edx
sar eax, 2
mov ebp, esi
sub ebp, eax
cmp esi, ebp
mov dword [esp + 0x34], esi
jl 0x511760
lea esp, [esp]
cmp byte [esp + esi + 0xe8], 0x20
je 0x511760
mov eax, dword [esp + 0x18]
xor edi, edi
test eax, eax
je 0x511721
mov edx, esi
lea ecx, [esp + 0xe8]
call fcn.0055a010
test eax, eax
je 0x511701
mov edi, 1
jg 0x511757
cmp eax, 0xffffffff
je 0x511757
cmp eax, 0xfffffffe
je 0x511757
test edi, edi
je 0x511721
mov edx, esi
lea ecx, [esp + 0xe8]
call fcn.0055a010
test eax, eax
jne 0x511744
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x511744
lea ecx, [esp + 0xe8]
push esi
push ecx
call fcn.005946b3
add esp, 8
cmp eax, 1
je 0x511757
cmp eax, 2
je 0x511757
cmp byte [esp + esi + 0xe8], 2
jne 0x511757
xor edx, edx
test ebx, ebx
sete dl
mov ebx, edx
dec esi
cmp esi, ebp
jge 0x5116d0
test esi, esi
jge 0x511766
xor esi, esi
cmp esi, ebp
jg 0x511770
mov esi, dword [esp + 0x34]
jmp 0x511782
cmp dword [esp + 0x20], ebx
je 0x511782
mov dword [esp + 0x20], ebx
mov dword [esp + 0x50], 1
mov eax, dword [esp + 0x18]
xor ebp, ebp
test eax, eax
je 0x5117f3
mov eax, dword [esp + 0x28]
cmp esi, eax
jge 0x5117f3
lea edi, [esi + 1]
mov ebx, eax
lea esp, [esp]
mov edx, esi
lea ecx, [esp + 0xe8]
call fcn.0055a010
test eax, eax
je 0x5117b9
mov ebp, 1
jg 0x5117d7
cmp eax, 0xffffffff
je 0x5117d7
cmp eax, 0xfffffffe
jne 0x5117dd
cmp edi, ebx
jge 0x5117dd
lea ecx, [esp + esi + 0xe9]
call fcn.0055ac90
test eax, eax
je 0x5117dd
inc esi
inc edi
cmp esi, ebx
jl 0x5117a0
test ebp, ebp
je 0x5117f3
mov edx, esi
lea ecx, [esp + 0xe8]
call fcn.0055a010
test eax, eax
jne 0x51181e
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x51181e
mov eax, dword [esp + 0x28]
lea edi, [esi + 1]
cmp edi, eax
jge 0x51181e
lea eax, [esp + 0xe8]
push esi
push eax
call fcn.005946b3
add esp, 8
cmp eax, 2
jne 0x51181e
mov esi, edi
mov ecx, dword [esp + 0x14]
mov eax, dword [0x5f31f0]
inc esi
test ecx, ecx
jne 0x511836
mov byte [esp + esi + 0xe8], 0
jmp 0x511858
test eax, eax
jle 0x51184e
cmp esi, eax
jg 0x51184e
dec eax
mov dword [0x5f31f0], eax
mov byte [esp + eax + 0x90], 0
jmp 0x511898
mov byte [esp + esi + 0xe8], 0
sub esi, eax
mov eax, dword [esp + 0x10]
add eax, esi
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x8c4]
mov dword [esp + 0x14], eax
mov eax, dword [edx + 0x1c]
push eax
push ecx
mov ecx, dword [esp + 0x30]
lea edx, [esp + 0xf4]
call fcn.00510570
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x4c], 0
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0x10]
cmp edx, dword [esp + 0x38]
jb 0x5114f0
mov eax, dword [esp + 0x3c]
test eax, eax
jl 0x5118b7
push eax
call fcn.00594506
add esp, 4
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x30]
push eax
push ecx
call dword [sym.imp.GDI32.dll_SelectObject]
mov eax, dword [esp + 0x48]
test eax, eax
je 0x5118d6
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x5c]
mov edi, dword [esp + 0x24]
mov dword [0x5bfd5c], eax
mov eax, dword [esp + 0x6c]
test eax, eax
mov dword [0x5f31e8], edx
mov edx, dword [esp + 0x64]
mov dword [0x5f31f0], ecx
mov dword [0x5f3210], edx
je 0x511915
mov eax, dword [edi + 0x6cc]
mov dword [edi + 0x6f8], eax
mov ebx, dword [edi + 0x70c]
mov esi, dword [esp + 0x7c]
mov eax, dword [edi + 0x6cc]
mov ecx, dword [esp + 0x74]
add esi, ebx
mov ebx, dword [esp + 0x2c]
push eax
mov edx, ebx
mov dword [edi + 0x6cc], ecx
call fcn.004d3b40
mov dword [edi + 0x6cc], eax
mov dword [edi + 0x70c], esi
mov esi, dword [ebx + 0x44]
mov edx, ebx
mov ecx, eax
call fcn.004d3ac0
mov dword [edi + 0x6cc], eax
dec dword [edi + 0x70c]
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x8a8
ret 8