Function at 0x46bdd0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 0x12c
push 0
push 0
dec ecx
jne 0x46bdd9
xchg dword [ebp - 4], ecx
push ebx
push esi
push edi
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0xc], edx
mov dword [ebp - 8], eax
xor eax, eax
push ebp
push 0x46cbee
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [ebp + 0x10], 0x800
jle 0x46be0d
mov dword [ebp + 0x10], 0x800
mov eax, dword [ebp + 0xc]
cmp eax, dword [ebp + 0x10]
jle 0x46be1b
mov eax, dword [ebp + 0x10]
mov dword [ebp + 0xc], eax
mov eax, dword [0x4828bc]
mov eax, dword [eax + 0xc]
mov edx, dword [0x4828bc]
sub eax, dword [edx + 4]
inc eax
cmp eax, dword [ebp - 0x10]
jne 0x46be50
mov eax, dword [0x4828bc]
mov eax, dword [eax + 8]
mov edx, dword [0x4828bc]
sub eax, dword [edx]
inc eax
mov edx, dword [ebp - 0xc]
add edx, dword [ebp + 0xc]
cmp eax, edx
jge 0x46be50
dec dword [ebp + 0xc]
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov ecx, dword [ebp + 0x10]
mov edx, 1
call fcn.00405084
jmp 0x46be78
mov eax, dword [ebp - 8]
mov edx, 0x46cc08
call fcn.00404e34
mov eax, dword [ebp - 8]
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00404e2c
cmp eax, dword [ebp + 0x10]
jl 0x46be68
mov byte [ebp - 0x16], 1
mov dword [ebp - 4], 1
mov dword [ebp - 0x14], 1
lea eax, [ebp - 0x28]
mov edx, dword [ebp - 8]
mov edx, dword [edx]
call fcn.00404c0c
mov byte [ebp - 0x15], 0x20
xor eax, eax
mov dword [ebp - 0x38], eax
xor eax, eax
mov dword [ebp - 0x3c], eax
mov eax, dword [0x482768]
mov al, byte [eax]
mov byte [ebp - 0x3e], al
mov eax, dword [0x482768]
mov byte [eax], 1
mov eax, dword [ebp - 4]
cmp eax, dword [ebp - 0x14]
jge 0x46bed4
mov eax, dword [ebp - 4]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
add eax, dword [ebp + 0xc]
cmp eax, dword [ebp - 4]
jge 0x46bee8
mov eax, dword [ebp - 4]
sub eax, dword [ebp + 0xc]
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x1c]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp - 0x14]
call fcn.00405084
mov edx, dword [ebp - 4]
sub edx, dword [ebp - 0x14]
inc edx
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00454e94
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
call fcn.00472004
mov eax, dword [ebp - 0x38]
sub eax, dword [ebp - 0x14]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x3c]
sub eax, dword [ebp - 0x14]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0x3c]
jle 0x46bf3d
lea edx, [ebp - 0x30]
lea eax, [ebp - 0x2c]
call fcn.0046bdc4
cmp dword [ebp - 0x3c], 0
je 0x46bf51
mov eax, dword [ebp - 0x2c]
cmp eax, dword [ebp + 0xc]
jge 0x46bf51
cmp dword [ebp - 0x30], 0
jge 0x46bf6d
mov eax, dword [0x4826f8]
mov edx, dword [ebp - 0x1c]
call fcn.00405240
call fcn.00402ef8
call fcn.004028d8
jmp 0x46c020
mov ebx, dword [0x4826b8]
movzx ebx, byte [ebx]
cmp dword [ebp - 0x2c], 0
jle 0x46bfad
lea eax, [ebp - 0x848]
push eax
mov ecx, dword [ebp - 0x2c]
mov edx, 1
mov eax, dword [ebp - 0x1c]
call fcn.00405084
mov edx, dword [ebp - 0x848]
mov eax, dword [0x4826f8]
call fcn.00405240
call fcn.00402ef8
call fcn.004028d8
mov al, 8
call fcn.00472128
lea eax, [ebp - 0x84c]
push eax
mov ecx, dword [ebp - 0x30]
sub ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x2c]
inc edx
mov eax, dword [ebp - 0x1c]
call fcn.00405084
mov edx, dword [ebp - 0x84c]
mov eax, dword [0x4826f8]
call fcn.00405240
call fcn.00402ef8
call fcn.004028d8
mov eax, dword [0x4826b8]
mov byte [eax], bl
lea eax, [ebp - 0x850]
push eax
mov edx, dword [ebp - 0x30]
inc edx
mov ecx, 0x3e7
mov eax, dword [ebp - 0x1c]
call fcn.00405084
mov edx, dword [ebp - 0x850]
mov eax, dword [0x4826f8]
call fcn.00405240
call fcn.00402ef8
call fcn.004028d8
mov eax, dword [ebp - 0x1c]
call fcn.00404e2c
cmp eax, 0x50
jge 0x46c032
call fcn.00472098
mov eax, dword [ebp - 4]
sub eax, dword [ebp - 0x14]
add eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x10]
call fcn.00472004
cmp dword [0x505070], 0
je 0x46c053
xor eax, eax
call fcn.0046a9b4
call fcn.00471f04
mov ebx, eax
call fcn.0046a460
push 0x10
call sub.user32.dll_GetKeyState
test ax, ax
setl byte [ebp - 0x3d]
test bl, bl
jne 0x46c089
call fcn.00471f04
mov byte [ebp - 0x15], al
mov al, byte [ebp - 0x15]
add al, 0xf0
sub al, 3
jae 0x46c089
call fcn.00471f04
mov ebx, eax
test bl, bl
jne 0x46c748
call fcn.0046a418
cmp byte [ebp - 0x3d], 0
jne 0x46c0b4
cmp byte [ebp - 0x15], 0xff
je 0x46c0c0
cmp byte [ebp - 0x15], 0xfe
je 0x46c0c0
xor eax, eax
mov dword [ebp - 0x38], eax
xor eax, eax
mov dword [ebp - 0x3c], eax
jmp 0x46c0c0
cmp dword [ebp - 0x38], 0
jg 0x46c0c0
mov eax, dword [ebp - 4]
mov dword [ebp - 0x38], eax
xor eax, eax
mov al, byte [ebp - 0x15]
cmp eax, 0x5e
jg 0x46c147
je 0x46c4ed
add eax, 0xffffffc5
cmp eax, 0x18
ja case.0x46c0dc.60
jmp dword [eax*4 + 0x46c0e3]
cmp eax, 0x73
jg 0x46c179
je 0x46c4e1
sub eax, 0x61
je 0x46c45f
sub eax, 4
je 0x46c4b1
dec eax
je 0x46c4bb
sub eax, 2
je 0x46c329
jmp case.0x46c0dc.60
sub eax, 0x74
je 0x46c4d5
add eax, 0xfffffffc
sub eax, 0xa
jb 0x46c733
sub eax, 0x7c
je 0x46c5bd
dec eax
je 0x46c4fc
jmp case.0x46c0dc.60
cmp dword [ebp - 4], 1
jg 0x46c1b3
call fcn.0046a5d8
jmp 0x46c733
dec dword [ebp - 4]
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
mov al, byte [eax + edx - 1]
call fcn.0046a210
jmp 0x46c733
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00404e2c
cmp eax, dword [ebp - 4]
jge 0x46c1e5
call fcn.0046a5d8
jmp 0x46c733
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
mov al, byte [eax + edx - 1]
call fcn.00402b10
add al, 0xbf
sub al, 0x1a
jb 0x46c202
add al, 0xfa
sub al, 0x1a
jae 0x46c20e
push 0x12
call sub.user32.dll_GetKeyState
test ax, ax
jl 0x46c221
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
mov al, byte [eax + edx - 1]
call fcn.0046a210
jmp 0x46c25a
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
movzx eax, byte [eax + edx - 1]
lea edx, [ebp - 0x858]
call fcn.004090a8
mov ecx, dword [ebp - 0x858]
lea eax, [ebp - 0x854]
mov edx, 0x46cc14
call fcn.00404e78
mov eax, dword [ebp - 0x854]
call fcn.0046a374
inc dword [ebp - 4]
jmp 0x46c733
mov dword [ebp - 4], 1
jmp 0x46c733
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00404e2c
inc eax
mov dword [ebp - 4], eax
dec dword [ebp - 4]
cmp dword [ebp - 4], 0
je 0x46c294
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
cmp byte [eax + edx - 1], 0x20
je 0x46c27c
inc dword [ebp - 4]
jmp 0x46c733
cmp dword [ebp - 0x38], 0
jle 0x46c2f7
cmp dword [ebp - 0x3c], 0
jle 0x46c2f7
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0x3c]
jle 0x46c2bb
lea edx, [ebp - 0x3c]
lea eax, [ebp - 0x38]
call fcn.0046bdc4
mov eax, dword [ebp - 0x38]
mov dword [ebp - 4], eax
cmp byte [0x50506b], 0
je 0x46c2d4
mov eax, 0x46cc24
call fcn.0046a374
mov edi, dword [ebp - 0x38]
mov esi, dword [ebp - 0x3c]
dec esi
sub esi, edi
jl 0x46c2ec
inc esi
push ebp
xor eax, eax
call fcn.0046b90c
pop ecx
dec esi
jne 0x46c2e0
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x3c], eax
jmp 0x46c733
push ebp
mov al, 1
call fcn.0046b90c
pop ecx
jmp 0x46c733
push 0x12
call sub.user32.dll_GetKeyState
movsx eax, ax
shr eax, 0xf
je 0x46c31d
mov byte [ebp - 0x15], 0x68
jmp case.0x46c0dc.60
push ebp
call fcn.0046ba90
pop ecx
jmp 0x46c733
call fcn.0046b284
jmp 0x46c733
mov eax, dword [ebp - 4]
mov dword [ebp - 0x2c], eax
jmp 0x46c33e
dec dword [ebp - 0x2c]
cmp dword [ebp - 0x2c], 1
jle 0x46c353
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 0x2c]
cmp byte [eax + edx - 2], 0x20
jne 0x46c33b
mov eax, dword [ebp - 4]
mov dword [ebp - 0x30], eax
jmp 0x46c35e
inc dword [ebp - 0x30]
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00404e2c
cmp eax, dword [ebp - 0x30]
jle 0x46c37c
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 0x30]
cmp byte [eax + edx - 1], 0x20
jne 0x46c35b
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 0x30]
cmp byte [eax + edx - 1], 0x20
jne 0x46c38e
dec dword [ebp - 0x30]
lea eax, [ebp - 0x34]
push eax
mov ecx, dword [ebp - 0x30]
sub ecx, dword [ebp - 0x2c]
inc ecx
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 0x2c]
call fcn.00405084
jmp 0x46c3ba
lea eax, [ebp - 0x34]
mov ecx, 1
mov edx, 1
call fcn.004050c4
cmp dword [ebp - 0x34], 0
je 0x46c3ec
mov eax, dword [ebp - 0x34]
mov al, byte [eax]
and eax, 0xff
bt dword [0x481aac], eax
jb 0x46c3a8
jmp 0x46c3ec
mov eax, dword [ebp - 0x34]
call fcn.00404e2c
mov edx, eax
lea eax, [ebp - 0x34]
mov ecx, 1
call fcn.004050c4
cmp dword [ebp - 0x34], 0
je 0x46c40f
mov eax, dword [ebp - 0x34]
call fcn.00404e2c
mov edx, dword [ebp - 0x34]
mov al, byte [edx + eax - 1]
and eax, 0xff
bt dword [0x481aac], eax
jb 0x46c3d5
cmp dword [ebp - 0x34], 0
jne 0x46c41f
call fcn.0046a5d8
jmp 0x46c733
mov eax, dword [ebp - 0x34]
call fcn.0046b33c
jmp 0x46c733
mov al, byte [0x505088]
xor al, 1
mov byte [0x505088], al
cmp byte [0x505088], 0
je 0x46c450
mov eax, 0x46cc34
call fcn.0046a374
jmp 0x46c733
mov eax, 0x46cc44
call fcn.0046a374
jmp 0x46c733
mov eax, 0x46cc54
call fcn.0046a374
call fcn.0046a740
mov ebx, eax
call fcn.00471eec
test al, al
jne 0x46c469
cmp bl, 0x1b
je 0x46c733
cmp bl, 0xd
je 0x46c733
call fcn.00469b18
xor eax, eax
mov al, bl
sub eax, 0x30
mov edx, dword [0x505084]
call fcn.00469720
jmp 0x46c733
call fcn.0046d748
jmp 0x46c733
call fcn.0046d774
jmp 0x46c733
push 0x12
call sub.user32.dll_GetKeyState
test ax, ax
jge case.0x46c0dc.60
call fcn.00468aec
jmp 0x46c733
push ebp
call fcn.0046bc3c
pop ecx
jmp 0x46c733
push ebp
call fcn.0046bd18
pop ecx
jmp 0x46c733
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.0046a9b4
jmp 0x46c733
cmp dword [ebp - 0x38], 0
jle 0x46c508
cmp dword [ebp - 0x3c], 0
jg 0x46c562
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00404e2c
mov ebx, eax
dec ebx
test ebx, ebx
je 0x46c525
mov eax, dword [ebp - 8]
mov eax, dword [eax]
cmp byte [eax + ebx - 1], 0x20
je 0x46c514
mov esi, ebx
test esi, esi
jle 0x46c546
mov edi, 1
lea eax, [ebp - 0x841]
mov edx, dword [ebp - 8]
mov edx, dword [edx]
mov dl, byte [edx + edi - 1]
mov byte [eax], dl
inc edi
inc eax
dec esi
jne 0x46c536
mov byte [ebp + ebx - 0x841], 0xd
inc ebx
mov byte [ebp + ebx - 0x841], 0xa
inc ebx
mov byte [ebp + ebx - 0x841], 0
jmp 0x46c5ad
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0x3c]
jle 0x46c575
lea edx, [ebp - 0x3c]
lea eax, [ebp - 0x38]
call fcn.0046bdc4
mov esi, dword [ebp - 0x3c]
sub esi, dword [ebp - 0x38]
test esi, esi
jle 0x46c59f
mov edi, 1
lea eax, [ebp - 0x841]
mov edx, dword [ebp - 0x38]
add edx, edi
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx]
mov dl, byte [ecx + edx - 2]
mov byte [eax], dl
inc edi
inc eax
dec esi
jne 0x46c58a
mov eax, dword [ebp - 0x3c]
sub eax, dword [ebp - 0x38]
mov byte [ebp + eax - 0x841], 0
lea eax, [ebp - 0x841]
call fcn.004722c0
jmp 0x46c733
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00404e2c
mov edx, eax
inc edx
lea eax, [ebp - 0x841]
call fcn.00472318
lea edx, [ebp - 0x24]
lea eax, [ebp - 0x841]
call fcn.004097c8
mov eax, dword [ebp - 0x24]
call fcn.00404e2c
mov esi, eax
test esi, esi
jle 0x46c61d
mov edi, 1
mov eax, dword [ebp - 0x24]
mov al, byte [eax + edi - 1]
cmp al, 0xd
je 0x46c608
mov edx, dword [ebp - 0x24]
cmp al, 0xa
jne 0x46c619
lea eax, [ebp - 0x24]
mov ecx, 0x3e7
mov edx, edi
call fcn.004050c4
jmp 0x46c61d
inc edi
dec esi
jne 0x46c5f6
mov al, byte [ebp - 0x16]
and al, byte [0x505068]
je 0x46c658
call fcn.0046a57c
call fcn.0046a57c
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00404e2c
mov esi, eax
test esi, esi
jle 0x46c658
mov edi, 1
mov eax, dword [ebp - 8]
call fcn.0040507c
mov byte [eax + edi - 1], 0x20
inc edi
dec esi
jne 0x46c647
cmp dword [ebp - 0x38], 0
jg 0x46c66c
mov eax, dword [ebp - 4]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0x3c], eax
jmp 0x46c672
mov eax, dword [ebp - 0x38]
mov dword [ebp - 4], eax
mov ebx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x24]
call fcn.00404e2c
add eax, dword [ebp - 0x38]
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x85c]
push eax
mov ecx, dword [ebp - 0x38]
dec ecx
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, 1
call fcn.00405084
push dword [ebp - 0x85c]
push dword [ebp - 0x24]
lea eax, [ebp - 0x860]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov ecx, 0x3e7
mov edx, ebx
call fcn.00405084
push dword [ebp - 0x860]
lea eax, [ebp - 0x24]
mov edx, 3
call fcn.00404eec
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00404e2c
push eax
mov eax, dword [ebp - 8]
call fcn.0040507c
mov cl, 0x20
pop edx
call fcn.00403240
lea eax, [ebp - 0x24]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00404e2c
mov ecx, eax
mov edx, 1
mov eax, dword [ebp - 0x24]
call fcn.00405084
mov eax, dword [ebp - 0x24]
call fcn.00404e2c
mov esi, eax
test esi, esi
jle 0x46c733
mov edi, 1
mov eax, dword [ebp - 8]
call fcn.0040507c
mov edx, dword [ebp - 0x24]
mov dl, byte [edx + edi - 1]
mov byte [eax + edi - 1], dl
inc edi
dec esi
jne 0x46c71c
cmp byte [ebp - 0x3d], 0
je 0x46caf0
mov eax, dword [ebp - 4]
mov dword [ebp - 0x3c], eax
jmp 0x46caf0
mov eax, ebx
sub al, 3
je 0x46c762
sub al, 0x13
je 0x46c762
add al, 0x38
sub al, 2
jb 0x46c762
xor eax, eax
mov dword [ebp - 0x38], eax
xor eax, eax
mov dword [ebp - 0x3c], eax
mov byte [ebp - 0x15], bl
xor eax, eax
mov al, bl
cmp eax, 0x13
jg 0x46c7bc
je 0x46c909
cmp eax, 0xd
ja case.0x46c77d.0
jmp dword [eax*4 + 0x46c784]
cmp eax, 0x1c
jg 0x46c7ea
je 0x46ca29
sub eax, 0x15
je 0x46c987
dec eax
je 0x46ca13
sub eax, 3
je 0x46c9b7
sub eax, 2
je case.0x46c77d.2
jmp case.0x46c77d.0
sub eax, 0x7f
je 0x46c825
sub eax, 0x5f
je 0x46c805
dec eax
jne case.0x46c77d.0
jmp 0x46caf0
call sub.user32.dll_WaitMessage
call fcn.0046a17c
test al, al
jne 0x46c800
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.0046a9b4
jmp 0x46caf0
mov byte [ebp - 0x15], bl
jmp case.0x46c0dc.60
cmp dword [ebp - 4], 1
jle 0x46c841
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
cmp byte [eax + edx - 2], 0x20
je 0x46c841
push ebp
call fcn.0046bd18
pop ecx
mov eax, dword [ebp - 4]
mov dword [ebp - 0x2c], eax
push ebp
call fcn.0046bc3c
pop ecx
mov eax, dword [ebp - 4]
mov dword [ebp - 0x30], eax
push ebp
call fcn.0046bd18
pop ecx
mov edi, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x30]
dec esi
sub esi, edi
jl 0x46caf0
inc esi
push ebp
cmp edi, dword [ebp - 0x2c]
sete al
call fcn.0046b90c
pop ecx
inc edi
dec esi
jne 0x46c86b
jmp 0x46caf0
cmp dword [ebp - 4], 1
jne 0x46c891
call fcn.0046a5d8
jmp 0x46caf0
dec dword [ebp - 4]
push ebp
mov al, 1
call fcn.0046b90c
pop ecx
jmp 0x46caf0
lea edx, [ebp - 0x960]
mov eax, dword [ebp - 4]
call fcn.00403604
lea edx, [ebp - 0x960]
lea eax, [ebp - 0x24]
call fcn.00404dd0
mov eax, dword [ebp - 0x24]
call fcn.0046a9b4
jmp 0x46caf0
cmp byte [ebp + 8], 0
je 0x46caf0
mov edi, dword [ebp - 4]
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00404e2c
mov esi, eax
sub esi, edi
jl 0x46c8fa
inc esi
mov eax, dword [ebp - 8]
call fcn.0040507c
mov byte [eax + edi - 1], 0x20
inc edi
dec esi
jne 0x46c8e9
mov eax, 0x46cc64
call fcn.0046a374
jmp 0x46caf0
cmp byte [ebp + 8], 0
je 0x46caf0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00404e2c
mov ebx, eax
sub ebx, dword [ebp - 4]
inc ebx
mov esi, ebx
test esi, esi
jle 0x46c94c
mov edi, 1
mov eax, dword [ebp - 8]
call fcn.0040507c
mov edx, dword [ebp - 4]
add edx, edi
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx]
mov dl, byte [ecx + edx - 2]
mov byte [eax + edi - 1], dl
inc edi
dec esi
jne 0x46c92e
lea edi, [ebx + 1]
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00404e2c
mov esi, eax
sub esi, edi
jl 0x46c971
inc esi
mov eax, dword [ebp - 8]
call fcn.0040507c
mov byte [eax + edi - 1], 0x20
inc edi
dec esi
jne 0x46c960
mov dword [ebp - 4], 1
mov eax, 0x46cc74
call fcn.0046a374
jmp 0x46caf0
cmp byte [ebp + 8], 0
je 0x46caf0
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x28]
call fcn.00404bc8
mov dword [ebp - 4], 1
call fcn.0046a5d8
call fcn.0046a5d8
call fcn.0046a5d8
jmp 0x46caf0
cmp byte [ebp + 8], 0
je 0x46caf0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00404e2c
mov esi, eax
test esi, esi
jle 0x46c9e7
mov edi, 1
mov eax, dword [ebp - 8]
call fcn.0040507c
mov byte [eax + edi - 1], 0x20
inc edi
dec esi
jne 0x46c9d6
mov eax, 0x46cc84
call fcn.0046a374
mov dword [ebp - 4], 1
jmp 0x46caf0
cmp byte [0x505069], 0
jne case.0x46c0dc.60
mov byte [ebp - 0x15], 0xff
jmp 0x46c0c0
cmp byte [0x505069], 0
jne case.0x46c0dc.60
mov byte [ebp - 0x15], 0xfe
jmp 0x46c0c0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00404e2c
mov esi, eax
test esi, esi
jle 0x46caf0
mov edi, 1
lea eax, [ebp - 0x964]
mov edx, dword [ebp - 8]
mov edx, dword [edx]
mov dl, byte [edx + edi - 1]
call fcn.00404d54
mov eax, dword [ebp - 0x964]
call fcn.0046b100
inc edi
dec esi
jne 0x46ca42
jmp 0x46caf0
mov al, byte [ebp - 0x16]
and al, byte [0x505068]
je 0x46cae2
mov byte [ebp - 0x1d], 0
mov edi, dword [ebp - 4]
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00404e2c
mov esi, eax
sub esi, edi
jl 0x46caa1
inc esi
mov eax, dword [ebp - 8]
mov eax, dword [eax]
cmp byte [eax + edi - 1], 0x20
je 0x46ca9d
mov byte [ebp - 0x1d], 1
inc edi
dec esi
jne 0x46ca8d
cmp byte [ebp - 0x1d], 0
je 0x46cae2
call fcn.0046a57c
call fcn.0046a57c
cmp bl, 0x20
setae al
and al, byte [ebp + 8]
je 0x46cae2
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00404e2c
mov esi, eax
test esi, esi
jle 0x46cae2
mov edi, 1
mov eax, dword [ebp - 8]
call fcn.0040507c
mov byte [eax + edi - 1], 0x20
inc edi
dec esi
jne 0x46cad1
cmp bl, 0x20
jb 0x46caf0
push ebp
mov eax, ebx
call fcn.0046b838
pop ecx
mov byte [ebp - 0x16], 0
jmp 0x46bec6
mov bl, byte [ebp - 0x15]
mov eax, dword [ebp - 4]
mov dword [0x50505c], eax
call fcn.00454e54
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
call fcn.00472004
lea eax, [ebp - 0x1c]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov ecx, dword [ebp + 0xc]
mov edx, 1
call fcn.00405084
mov eax, dword [0x4826f8]
mov edx, dword [ebp - 0x1c]
call fcn.00405240
call fcn.00402ef8
call fcn.004028d8
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
call fcn.00472004
mov eax, dword [ebp + 0x10]
inc eax
mov dword [ebp - 4], eax
dec dword [ebp - 4]
cmp dword [ebp - 4], 0
je 0x46cb6b
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
cmp byte [eax + edx - 1], 0x20
je 0x46cb53
cmp dword [ebp - 4], 0
jne 0x46cb7b
mov eax, dword [ebp - 8]
call fcn.00404b74
jmp 0x46cb91
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov ecx, dword [ebp - 4]
mov edx, 1
call fcn.00405084
mov eax, dword [0x482768]
mov byte [eax], 0
call fcn.0046a418
mov eax, dword [0x482768]
mov dl, byte [ebp - 0x3e]
mov byte [eax], dl
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x46cbf5
lea eax, [ebp - 0x964]
call fcn.00404b74
lea eax, [ebp - 0x860]
mov edx, 7
call fcn.00404b98
lea eax, [ebp - 0x34]
call fcn.00404b74
lea eax, [ebp - 0x28]
mov edx, 2
call fcn.00404b98
lea eax, [ebp - 0x1c]
call fcn.00404b74
ret