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

Disassembly:
push 0xffffffffffffffff
push 0x4965bc
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x9c0
mov eax, dword [0x4c1830]
push ebp
push esi
push edi
xor edi, edi
mov dword [esp + 0x9c8], eax
mov eax, dword [esp + 0x9e0]
push eax
lea ecx, [esp + 0x50]
push ecx
mov dword [esp + 0x18], edi
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x38], 0xa
mov byte [esp + 0x17], 1
mov dword [esp + 0x30], edi
call dword [sym.imp.USER32.dll_CopyRect]
mov ebp, dword [esp + 0x9dc]
mov edx, dword [ebp]
mov ecx, ebp
call dword [edx + 0x1c]
push 1
mov ecx, ebp
mov dword [esp + 0x4c], eax
call fcn.0048d203
cmp dword [esp + 0x9e8], 0xffffffff
mov esi, dword [esp + 0x9e4]
jne 0x46cdc5
push esi
call fcn.00475d39
add esp, 4
mov dword [esp + 0x9e8], eax
push ebx
mov ebx, dword [esp + 0x9f0]
cmp ebx, edi
mov al, 0x2d
mov byte [esp + 0x68], 0x33
mov byte [esp + 0x60], al
mov byte [esp + 0x70], al
mov byte [esp + 0x80], al
mov byte [esp + 0x90], 0
mov byte [esp + 0x88], 0x30
mov byte [esp + 0x78], 0x4e
je 0x46ce2f
mov ecx, ebx
call fcn.004652d0
cmp eax, 0x2bc
jne 0x46ce17
mov dword [esp + 0x1c], 1
mov byte [esp + 0x61], 0x2b
mov ecx, ebx
call fcn.004651e0
test al, al
je 0x46ce2f
mov dword [esp + 0x20], 1
mov byte [esp + 0x71], 0x2b
mov eax, dword [esp + 0xa00]
cmp eax, 0xffffffff
je 0x46ce43
test al, 0xf
jne 0x46ce43
push 8
jmp 0x46ce45
push 0x18
mov eax, dword [ebp + 4]
push eax
call dword [sym.imp.GDI32.dll_SetTextAlign]
cmp word [esi], 0
mov ebx, esi
je 0x46d42e
lea eax, [esp + 0x90]
mov dword [esp + 0x30], eax
jmp 0x46ce73
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x9e8]
mov eax, dword [esp + 0x9ec]
mov ecx, ebx
sub ecx, esi
sar ecx, 1
cmp ecx, eax
jge 0x46d422
cmp word [ebx], 0x7f
jne 0x46d259
mov cx, word [ebx + 2]
add ebx, 2
mov ax, word [ebx + 2]
add ebx, 2
movzx ecx, cx
add ebx, 2
add ecx, 0xffffffad
cmp ecx, 0x26
mov dword [esp + 0x3c], ebx
ja case.0x46cebd.84
movzx edx, byte [ecx + 0x46d5a4]
jmp dword [edx*4 + 0x46d580]
cmp ax, 0x2e
je 0x46cee1
mov ecx, dword [esp + 0x18]
inc ecx
mov dword [esp + 0x18], ecx
mov byte [esp + ecx + 0x78], al
mov byte [esp + 0x13], 1
jmp case.0x46cebd.84
dec dword [esp + 0x18]
jns 0x46ceef
mov dword [esp + 0x18], 0
mov byte [esp + 0x13], 1
jmp case.0x46cebd.84
cmp ax, 0x2e
je 0x46cf11
mov ecx, dword [esp + 0x14]
inc ecx
mov dword [esp + 0x14], ecx
mov byte [esp + ecx + 0x68], al
jmp case.0x46cebd.84
dec dword [esp + 0x14]
jmp case.0x46cebd.84
cmp ax, 0x2e
je 0x46cf37
mov ecx, dword [esp + 0x1c]
inc ecx
mov dword [esp + 0x1c], ecx
mov byte [esp + ecx + 0x60], al
mov byte [esp + 0x13], 1
jmp case.0x46cebd.84
dec dword [esp + 0x1c]
mov byte [esp + 0x13], 1
jmp case.0x46cebd.84
cmp ax, 0x2e
je 0x46cf65
mov ecx, dword [esp + 0x28]
inc ecx
mov dword [esp + 0x28], ecx
mov byte [esp + ecx + 0x88], al
mov byte [esp + 0x13], 1
jmp case.0x46cebd.84
dec dword [esp + 0x28]
mov byte [esp + 0x13], 1
jmp case.0x46cebd.84
cmp ax, 0x2e
je 0x46cf90
mov ecx, dword [esp + 0x20]
inc ecx
mov dword [esp + 0x20], ecx
mov byte [esp + ecx + 0x70], al
mov byte [esp + 0x13], 1
jmp case.0x46cebd.84
dec dword [esp + 0x20]
mov byte [esp + 0x13], 1
jmp case.0x46cebd.84
cmp ax, 0x2e
je 0x46cfbe
mov ecx, dword [esp + 0x24]
inc ecx
mov dword [esp + 0x24], ecx
mov byte [esp + ecx + 0x80], al
mov byte [esp + 0x13], 1
jmp case.0x46cebd.84
dec dword [esp + 0x24]
mov byte [esp + 0x13], 1
jmp case.0x46cebd.84
cmp ax, 0x2e
je 0x46cff5
mov ecx, dword [esp + 0x30]
inc ecx
mov byte [ecx], al
mov eax, dword [esp + 0x14]
inc eax
mov byte [esp + eax + 0x68], 0x30
mov dword [esp + 0x30], ecx
mov dword [esp + 0x14], eax
mov byte [esp + 0x13], 1
jmp case.0x46cebd.84
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x14]
dec ecx
dec eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x14], eax
mov byte [esp + 0x13], 1
jmp case.0x46cebd.84
cmp ax, 0x2e
lea ecx, [esp + 0x98]
je 0x46d035
mov edi, edi
mov byte [ecx], al
xor eax, eax
mov ax, word [ebx]
inc ecx
add ebx, 2
cmp ax, 0x2e
jne 0x46d020
mov dword [esp + 0x3c], ebx
mov eax, dword [ebp + 8]
push eax
mov byte [ecx], 0
mov dword [esp + 0x3c], 0
call dword [sym.imp.GDI32.dll_GetTextColor]
push 0xff
mov ecx, eax
push 0xff
shr ecx, 0x10
movzx edx, cl
push 0xff
push edx
movzx ecx, ah
movzx edx, al
push ecx
push edx
lea eax, [esp + 0xc4]
push str._02X_02X_02X_02X_02X_02X
push eax
call fcn.00475189
add esp, 0x20
xor eax, eax
mov cl, byte [esp + eax + 0x98]
mov byte [esp + eax + 0xcc], cl
inc eax
test cl, cl
jne 0x46d081
lea eax, [esp + 0xac]
mov edx, eax
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x46d0a0
lea edi, [esp + 0xcc]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x46d0b1
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]
lea ecx, [esp + 0xcc]
push ecx
call fcn.00469400
mov ecx, eax
call fcn.004695e0
mov esi, eax
test esi, esi
jne 0x46d1aa
push 0x800
lea edx, [esp + 0x3c]
push edx
lea eax, [esp + 0x1d4]
push eax
lea ecx, [esp + 0xa4]
push ecx
call fcn.00413610
test eax, eax
je case.0x46cebd.84
call dword [0x4bd874]
push 0x20
call fcn.00486744
add esp, 4
mov dword [esp + 0x40], eax
test eax, eax
mov dword [esp + 0x9d8], esi
je 0x46d155
mov edx, dword [esp + 0x38]
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push edx
lea ecx, [esp + 0x1e0]
push ecx
lea edx, [esp + 0xb0]
push edx
mov ecx, eax
call fcn.004644a0
mov esi, eax
jmp 0x46d157
xor esi, esi
mov eax, dword [esp + 0x9fc]
test eax, eax
mov dword [esp + 0x9d8], 0xffffffff
je 0x46d1f3
mov eax, dword [ebp + 8]
mov edi, dword [esi]
push 0
push 0
push 1
push eax
call dword [sym.imp.GDI32.dll_GetTextColor]
push eax
call fcn.00464a80
add esp, 0xc
push eax
push 0
push 1
push 0xffffff
call fcn.00464a80
add esp, 0xc
push eax
mov ecx, esi
call dword [edi + 0x18]
mov edx, dword [esi]
mov ecx, esi
jmp 0x46d1ec
push 0x20
call fcn.00486744
add esp, 4
mov dword [esp + 0x40], eax
test eax, eax
mov dword [esp + 0x9d8], 1
je 0x46d1d9
push esi
lea ecx, [esp + 0xd0]
push ecx
mov ecx, eax
call fcn.004647e0
jmp 0x46d1db
xor eax, eax
mov edx, dword [eax]
mov dword [esp + 0x9d8], 0xffffffff
mov esi, eax
mov ecx, eax
push 0
push 0
call dword [edx + 0x20]
test esi, esi
je case.0x46cebd.84
mov eax, dword [esp + 0x9fc]
test eax, eax
je 0x46d241
mov edi, dword [esi]
push 0
push 0
push 0
push 0
mov eax, edi
mov ecx, esi
call dword [eax + 8]
mov ecx, dword [esp + 0x64]
cdq
sub eax, edx
mov ebx, eax
mov eax, dword [esp + 0x6c]
sub eax, ecx
cdq
sub eax, edx
sar eax, 1
sar ebx, 1
sub eax, ebx
add eax, ecx
mov ecx, dword [esp + 0x60]
push eax
push ecx
push ebp
mov ecx, esi
call dword [edi + 0xc]
mov ebx, dword [esp + 0x3c]
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 4]
add dword [esp + 0x50], eax
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax]
jmp case.0x46cebd.84
mov al, byte [esp + 0x13]
test al, al
je 0x46d376
test edi, edi
je 0x46d272
mov edx, dword [ebp]
push edi
mov ecx, ebp
call dword [edx + 0x28]
mov eax, dword [esp + 0x18]
cmp byte [esp + eax + 0x78], 0x49
mov dword [esp + 0x2c], 0
jne 0x46d2e1
mov ecx, dword [esp + 0x9f4]
push 0
push 0xffffffffffffffff
push 0
push 0
push 0
push 0x1f4
push 3
push 0
push 0xc
push 0x4990d8
mov dword [ecx], 0
call fcn.0046bd50
mov ecx, eax
call fcn.0046be10
mov esi, eax
test esi, esi
je 0x46d353
call fcn.0046bd50
mov esi, dword [esi + 8]
mov edx, dword [ebp]
push esi
mov ecx, ebp
mov edi, eax
call dword [edx + 0x28]
push 0
push eax
mov ecx, edi
call fcn.0046bf50
jmp 0x46d353
mov eax, dword [esp + 0x14]
movsx ecx, byte [esp + eax + 0x68]
mov edx, dword [esp + 0x1c]
cmp byte [esp + edx + 0x60], 0x2b
lea ecx, [ecx*4 - 0xc0]
jne 0x46d2ff
or ecx, 0x20
mov eax, dword [esp + 0x20]
cmp byte [esp + eax + 0x70], 0x2b
jne 0x46d30d
or ecx, 0x40
mov edx, dword [esp + 0x24]
cmp byte [esp + edx + 0x80], 0x2b
jne 0x46d321
or ecx, 0x80
mov eax, dword [esp + 0x9f0]
test eax, eax
je 0x46d353
mov edx, dword [esp + 0x28]
movsx edx, byte [esp + edx + 0x88]
mov eax, dword [eax + 8]
push edx
mov edx, dword [esp + 0x9f8]
push edx
push ecx
push eax
push ebp
call fcn.0046cac0
add esp, 0x14
mov dword [esp + 0x2c], eax
mov eax, dword [ebp + 4]
lea ecx, [esp + 0x44]
push ecx
push 1
push 0x4a6d84
push eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
mov edx, dword [esp + 0x48]
mov dword [esp + 0x34], edx
mov byte [esp + 0x13], 0
mov eax, dword [esp + 0x30]
mov al, byte [eax]
cmp al, 0x45
je 0x46d399
cmp al, 0x49
je 0x46d388
xor esi, esi
jmp 0x46d3a9
mov ecx, dword [esp + 0x34]
mov eax, 0x55555555
imul ecx
sub edx, ecx
sar edx, 1
jmp 0x46d3a2
mov eax, 0x55555556
imul dword [esp + 0x34]
mov esi, edx
shr esi, 0x1f
add esi, edx
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x9fc]
sub ecx, esi
test eax, eax
mov dword [esp + 0x5c], ecx
je 0x46d3eb
mov edx, dword [esp + 0x18]
mov al, byte [esp + edx + 0x78]
push 1
push ebx
cmp al, 0x49
mov eax, dword [ebp + 4]
push ecx
jne 0x46d3df
mov ecx, dword [esp + 0x5c]
push ecx
push eax
call dword [sym.imp.GDI32.dll_TextOutA]
jmp 0x46d3eb
mov edx, dword [esp + 0x5c]
push edx
push eax
call dword [sym.imp.GDI32.dll_TextOutW]
mov eax, dword [ebp + 4]
lea ecx, [esp + 0x44]
push ecx
push 1
push ebx
push eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
mov edi, dword [esp + 0x50]
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x44]
add edi, edx
add ecx, esi
mov dword [esp + 0x50], edi
mov dword [esp + 0x5c], ecx
add ebx, 2
cmp word [ebx], 0
jne 0x46ce68
mov al, byte [esp + 0x13]
test al, al
je 0x46d517
mov eax, dword [esp + 0x18]
cmp byte [esp + eax + 0x78], 0x49
jne 0x46d498
mov ecx, dword [esp + 0x9f4]
push 0
push 0xffffffffffffffff
push 0
push 0
push 0
push 0x2bc
push 3
push 0
push 0xc
push 0x4990d8
mov dword [ecx], 0
call fcn.0046bd50
mov ecx, eax
call fcn.0046be10
mov esi, eax
test esi, esi
je 0x46d517
call fcn.0046bd50
mov esi, dword [esi + 8]
mov edx, dword [ebp]
push esi
mov ecx, ebp
mov edi, eax
call dword [edx + 0x28]
push 0
push eax
mov ecx, edi
call fcn.0046bf50
jmp 0x46d517
mov eax, dword [esp + 0x14]
movsx esi, byte [esp + eax + 0x68]
mov ecx, dword [esp + 0x1c]
cmp byte [esp + ecx + 0x60], 0x2b
lea esi, [esi*4 - 0xc0]
jne 0x46d4b6
or esi, 0x20
mov edx, dword [esp + 0x20]
cmp byte [esp + edx + 0x70], 0x2b
jne 0x46d4c4
or esi, 0x40
mov eax, dword [esp + 0x24]
cmp byte [esp + eax + 0x80], 0x2b
jne 0x46d4d8
or esi, 0x80
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x46d4e9
mov edx, dword [ebp]
push eax
mov ecx, ebp
call dword [edx + 0x28]
mov eax, dword [esp + 0x9f0]
test eax, eax
je 0x46d517
mov ecx, dword [esp + 0x28]
movsx edx, byte [esp + ecx + 0x88]
mov ecx, dword [esp + 0x9f4]
push edx
mov edx, dword [eax + 8]
push ecx
push esi
push edx
push ebp
call fcn.0046cac0
add esp, 0x14
mov ecx, dword [esp + 0x4c]
mov eax, dword [ebp]
push ecx
mov ecx, ebp
call dword [eax + 0x20]
mov edx, dword [esp + 0x9e4]
mov esi, dword [esp + 0x50]
mov edi, dword [edx]
mov eax, dword [esp + 0x2c]
sub esi, edi
test eax, eax
pop ebx
je 0x46d545
mov edx, dword [ebp]
push eax
mov ecx, ebp
call dword [edx + 0x28]
mov eax, dword [esp + 0x9f4]
test eax, eax
je 0x46d559
mov ecx, dword [esp + 0x30]
mov dword [eax], esi
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x9cc]
pop edi
mov eax, esi
pop esi
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x9c0]
pop ebp
call fcn.0047471e
add esp, 0x9cc
ret