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

Disassembly:
push 0xffffffffffffffff
push 0x463748
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x4c
mov eax, dword [0x47b6dc]
push ebx
push esi
push edi
mov edi, dword [esp + 0x6c]
push edi
lea ecx, [esp + 0x38]
mov dword [esp + 0x58], eax
call fcn.004232a0
xor ebx, ebx
lea ecx, [esp + 0x34]
mov dword [esp + 0x60], ebx
mov dword [esp + 0x6c], ebx
call fcn.004232d0
cmp word [eax], bx
mov esi, dword [esp + 0x74]
je 0x421a14
mov ebx, dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
push ebp
mov ebp, dword [esp + 0x74]
lea ecx, [ecx]
push 1
lea eax, [esp + 0x3c]
push eax
lea ecx, [esp + 0x50]
push ecx
call fcn.00423360
add esp, 0xc
push edi
lea edx, [esp + 0x14]
push edx
lea ecx, [esp + 0x50]
mov byte [esp + 0x6c], 1
call fcn.00423400
mov eax, dword [esp + 0x10]
mov ecx, dword [eax - 0xc]
lea edx, [esp + 0x18]
push edx
push ecx
push eax
mov eax, dword [esp + 0x78]
mov ecx, dword [eax + 8]
push ecx
mov byte [esp + 0x74], 2
call ebx
mov eax, dword [esp + 0x18]
cmp eax, ebp
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x24], edx
jle 0x4219b2
push edi
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x40]
call fcn.00423400
mov edx, dword [esi + 4]
test edx, edx
mov byte [esp + 0x64], 3
jne 0x421938
xor edi, edi
jmp 0x421940
mov edi, dword [esi + 8]
sub edi, edx
sar edi, 2
test edx, edx
je 0x42196d
mov ecx, dword [esi + 0xc]
sub ecx, edx
sar ecx, 2
cmp edi, ecx
jae 0x42196d
mov ecx, dword [esp + 0x70]
mov edi, dword [esi + 8]
push ecx
push esi
push eax
push 1
push edi
call fcn.00421130
add esp, 0x14
add edi, 4
mov dword [esi + 8], edi
jmp 0x42197b
mov ecx, dword [esi + 8]
push eax
push 1
push ecx
mov ecx, esi
call fcn.00421340
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov byte [esp + 0x64], 2
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42199e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x70]
inc eax
lea ecx, [esp + 0x38]
mov dword [esp + 0x70], eax
call fcn.004232d0
mov edi, eax
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
mov byte [esp + 0x64], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4219d5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0
call fcn.004232c0
push 0
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x40]
call fcn.00423300
lea ecx, [esp + 0x28]
call fcn.004232c0
lea ecx, [esp + 0x38]
call fcn.004232d0
cmp word [eax], 0
jne 0x4218c0
mov ebx, dword [esp + 0x70]
pop ebp
lea ecx, [esp + 0x34]
call fcn.004232d0
cmp edi, eax
je 0x421aab
push edi
lea ecx, [esp + 0x70]
push ecx
lea ecx, [esp + 0x3c]
call fcn.00423400
mov edx, dword [esi + 4]
test edx, edx
mov byte [esp + 0x60], 4
jne 0x421a44
xor edi, edi
jmp 0x421a4c
mov edi, dword [esi + 8]
sub edi, edx
sar edi, 2
test edx, edx
je 0x421a79
mov ecx, dword [esi + 0xc]
sub ecx, edx
sar ecx, 2
cmp edi, ecx
jae 0x421a79
mov edx, dword [esp + 0x6c]
mov edi, dword [esi + 8]
push edx
push esi
push eax
push 1
push edi
call fcn.00421130
add esp, 0x14
add edi, 4
mov dword [esi + 8], edi
jmp 0x421a87
mov ecx, dword [esi + 8]
push eax
push 1
push ecx
mov ecx, esi
call fcn.00421340
mov eax, dword [esp + 0x6c]
add eax, 0xfffffff0
mov byte [esp + 0x60], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x421aaa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
inc ebx
lea ecx, [esp + 0x34]
mov dword [esp + 0x60], 0xffffffff
call fcn.004232c0
mov ecx, dword [esp + 0x58]
pop edi
pop esi
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x4c]
mov eax, ebx
pop ebx
call fcn.0042a4a0
add esp, 0x58
ret