Function at 0x471608
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 0x12b
push 0
push 0
dec ecx
jne 0x471611
push ecx
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 0x4723b2
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [ebp + 0x10], 0x800
jle 0x471646
mov dword [ebp + 0x10], 0x800
mov eax, dword [ebp + 0xc]
cmp eax, dword [ebp + 0x10]
jle 0x471654
mov eax, dword [ebp + 0x10]
mov dword [ebp + 0xc], eax
mov eax, dword [0x483704]
mov eax, dword [eax + 0xc]
mov edx, dword [0x483704]
sub eax, dword [edx + 4]
inc eax
cmp eax, dword [ebp - 0x10]
jne 0x471689
mov eax, dword [0x483704]
mov eax, dword [eax + 8]
mov edx, dword [0x483704]
sub eax, dword [edx]
inc eax
mov edx, dword [ebp - 0xc]
add edx, dword [ebp + 0xc]
cmp eax, edx
jge 0x471689
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.00405600
jmp 0x4716b1
mov eax, dword [ebp - 8]
mov edx, 0x4723cc
call fcn.004053a8
mov eax, dword [ebp - 8]
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.004053a0
cmp eax, dword [ebp + 0x10]
jl 0x4716a1
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.00405178
mov byte [ebp - 0x15], 0x20
xor eax, eax
mov dword [ebp - 0x38], eax
xor eax, eax
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 4]
cmp eax, dword [ebp - 0x14]
jge 0x4716fb
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 0x47170f
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.00405600
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
call fcn.00420904
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 0x471753
lea edx, [ebp - 0x30]
lea eax, [ebp - 0x2c]
call fcn.004715fc
cmp dword [ebp - 0x3c], 0
je 0x471767
mov eax, dword [ebp - 0x2c]
cmp eax, dword [ebp + 0xc]
jge 0x471767
cmp dword [ebp - 0x30], 0
jge 0x471783
mov eax, dword [0x483518]
mov edx, dword [ebp - 0x1c]
call fcn.004057bc
call fcn.00403314
call fcn.00402c94
jmp 0x471836
mov ebx, dword [0x4834c4]
movzx ebx, byte [ebx]
cmp dword [ebp - 0x2c], 0
jle 0x4717c3
lea eax, [ebp - 0x844]
push eax
mov ecx, dword [ebp - 0x2c]
mov edx, 1
mov eax, dword [ebp - 0x1c]
call fcn.00405600
mov edx, dword [ebp - 0x844]
mov eax, dword [0x483518]
call fcn.004057bc
call fcn.00403314
call fcn.00402c94
mov al, 8
call fcn.00420a28
lea eax, [ebp - 0x848]
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.00405600
mov edx, dword [ebp - 0x848]
mov eax, dword [0x483518]
call fcn.004057bc
call fcn.00403314
call fcn.00402c94
mov eax, dword [0x4834c4]
mov byte [eax], bl
lea eax, [ebp - 0x84c]
push eax
mov edx, dword [ebp - 0x30]
inc edx
mov ecx, 0x3e7
mov eax, dword [ebp - 0x1c]
call fcn.00405600
mov edx, dword [ebp - 0x84c]
mov eax, dword [0x483518]
call fcn.004057bc
call fcn.00403314
call fcn.00402c94
mov eax, dword [ebp - 0x1c]
call fcn.004053a0
cmp eax, 0x50
jge 0x471848
call fcn.00420998
mov eax, dword [ebp - 4]
sub eax, dword [ebp - 0x14]
add eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x10]
call fcn.00420904
cmp dword [0x4d72d8], 0
je 0x471869
xor eax, eax
call fcn.00470338
call fcn.00420804
mov ebx, eax
call fcn.0046fe50
push 0x10
call sub.user32.dll_GetKeyState
test ax, ax
setl byte [ebp - 0x3d]
test bl, bl
jne 0x47189f
call fcn.00420804
mov byte [ebp - 0x15], al
mov al, byte [ebp - 0x15]
add al, 0xf0
sub al, 3
jae 0x47189f
call fcn.00420804
mov ebx, eax
test bl, bl
jne 0x471f3a
cmp byte [ebp - 0x3d], 0
jne 0x4718c5
cmp byte [ebp - 0x15], 0xff
je 0x4718d1
cmp byte [ebp - 0x15], 0xfe
je 0x4718d1
xor eax, eax
mov dword [ebp - 0x38], eax
xor eax, eax
mov dword [ebp - 0x3c], eax
jmp 0x4718d1
cmp dword [ebp - 0x38], 0
jg 0x4718d1
mov eax, dword [ebp - 4]
mov dword [ebp - 0x38], eax
xor eax, eax
mov al, byte [ebp - 0x15]
cmp eax, 0x5e
jg 0x471958
je 0x471ce2
add eax, 0xffffffc5
cmp eax, 0x18
ja case.0x4718ed.60
jmp dword [eax*4 + 0x4718f4]
cmp eax, 0x74
jg 0x47198a
je 0x471cca
sub eax, 0x61
je 0x471c54
sub eax, 4
je 0x471ca6
dec eax
je 0x471cb0
sub eax, 0xd
je 0x471cd6
jmp case.0x4718ed.60
add eax, 0xffffff88
sub eax, 0xa
jb 0x471f25
sub eax, 0x7c
je 0x471db2
dec eax
je 0x471cf1
jmp case.0x4718ed.60
cmp dword [ebp - 4], 1
jg 0x4719bb
call fcn.0046ffc0
jmp 0x471f25
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.0046fcbc
jmp 0x471f25
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.004053a0
cmp eax, dword [ebp - 4]
jge 0x4719ed
call fcn.0046ffc0
jmp 0x471f25
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
mov al, byte [eax + edx - 1]
call fcn.00402f20
add al, 0xbf
sub al, 0x1a
jb 0x471a0a
add al, 0xfa
sub al, 0x1a
jae 0x471a16
push 0x12
call sub.user32.dll_GetKeyState
test ax, ax
jl 0x471a29
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
mov al, byte [eax + edx - 1]
call fcn.0046fcbc
jmp 0x471a62
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
movzx eax, byte [eax + edx - 1]
lea edx, [ebp - 0x854]
call fcn.00409618
mov ecx, dword [ebp - 0x854]
lea eax, [ebp - 0x850]
mov edx, 0x4723d8
call fcn.004053ec
mov eax, dword [ebp - 0x850]
call fcn.0046fdac
inc dword [ebp - 4]
jmp 0x471f25
mov dword [ebp - 4], 1
jmp 0x471f25
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.004053a0
inc eax
mov dword [ebp - 4], eax
dec dword [ebp - 4]
cmp dword [ebp - 4], 0
je 0x471a9c
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
cmp byte [eax + edx - 1], 0x20
je 0x471a84
inc dword [ebp - 4]
jmp 0x471f25
cmp dword [ebp - 0x38], 0
jle 0x471af6
cmp dword [ebp - 0x3c], 0
jle 0x471af6
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0x3c]
jle 0x471ac3
lea edx, [ebp - 0x3c]
lea eax, [ebp - 0x38]
call fcn.004715fc
mov eax, dword [ebp - 0x38]
mov dword [ebp - 4], eax
mov eax, 0x4723e8
call fcn.0046fdac
mov edi, dword [ebp - 0x38]
mov esi, dword [ebp - 0x3c]
dec esi
sub esi, edi
jl 0x471aeb
inc esi
push ebp
xor eax, eax
call fcn.00471148
pop ecx
dec esi
jne 0x471adf
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x3c], eax
jmp 0x471f25
push ebp
mov al, 1
call fcn.00471148
pop ecx
jmp 0x471f25
push 0x12
call sub.user32.dll_GetKeyState
movsx eax, ax
shr eax, 0xf
je 0x471b1c
mov byte [ebp - 0x15], 0x68
jmp case.0x4718ed.60
push ebp
call fcn.004712c8
pop ecx
jmp 0x471f25
mov eax, dword [ebp - 4]
mov dword [ebp - 0x2c], eax
jmp 0x471b33
dec dword [ebp - 0x2c]
cmp dword [ebp - 0x2c], 1
jle 0x471b48
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 0x2c]
cmp byte [eax + edx - 2], 0x20
jne 0x471b30
mov eax, dword [ebp - 4]
mov dword [ebp - 0x30], eax
jmp 0x471b53
inc dword [ebp - 0x30]
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.004053a0
cmp eax, dword [ebp - 0x30]
jle 0x471b71
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 0x30]
cmp byte [eax + edx - 1], 0x20
jne 0x471b50
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 0x30]
cmp byte [eax + edx - 1], 0x20
jne 0x471b83
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.00405600
jmp 0x471baf
lea eax, [ebp - 0x34]
mov ecx, 1
mov edx, 1
call fcn.00405640
cmp dword [ebp - 0x34], 0
je 0x471be1
mov eax, dword [ebp - 0x34]
mov al, byte [eax]
and eax, 0xff
bt dword [0x482d1c], eax
jb 0x471b9d
jmp 0x471be1
mov eax, dword [ebp - 0x34]
call fcn.004053a0
mov edx, eax
lea eax, [ebp - 0x34]
mov ecx, 1
call fcn.00405640
cmp dword [ebp - 0x34], 0
je 0x471c04
mov eax, dword [ebp - 0x34]
call fcn.004053a0
mov edx, dword [ebp - 0x34]
mov al, byte [edx + eax - 1]
and eax, 0xff
bt dword [0x482d1c], eax
jb 0x471bca
cmp dword [ebp - 0x34], 0
jne 0x471c14
call fcn.0046ffc0
jmp 0x471f25
mov eax, dword [ebp - 0x34]
call fcn.00470b78
jmp 0x471f25
mov al, byte [0x4d72f8]
xor al, 1
mov byte [0x4d72f8], al
cmp byte [0x4d72f8], 0
je 0x471c45
mov eax, 0x4723f8
call fcn.0046fdac
jmp 0x471f25
mov eax, 0x472408
call fcn.0046fdac
jmp 0x471f25
mov eax, 0x472418
call fcn.0046fdac
call fcn.004700c4
mov ebx, eax
call fcn.004207ec
test al, al
jne 0x471c5e
cmp bl, 0x1b
je 0x471f25
cmp bl, 0xd
je 0x471f25
call fcn.0046f89c
xor eax, eax
mov al, bl
sub eax, 0x30
mov edx, dword [0x4d72f0]
call fcn.0046f4ec
jmp 0x471f25
call fcn.00472e58
jmp 0x471f25
call fcn.00472e84
jmp 0x471f25
push 0x12
call sub.user32.dll_GetKeyState
test ax, ax
jge case.0x4718ed.60
call fcn.0046ea6c
jmp 0x471f25
push ebp
call fcn.00471474
pop ecx
jmp 0x471f25
push ebp
call fcn.00471550
pop ecx
jmp 0x471f25
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00470338
jmp 0x471f25
cmp dword [ebp - 0x38], 0
jle 0x471cfd
cmp dword [ebp - 0x3c], 0
jg 0x471d57
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.004053a0
mov ebx, eax
dec ebx
test ebx, ebx
je 0x471d1a
mov eax, dword [ebp - 8]
mov eax, dword [eax]
cmp byte [eax + ebx - 1], 0x20
je 0x471d09
mov esi, ebx
test esi, esi
jle 0x471d3b
mov edi, 1
lea eax, [ebp - 0x840]
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 0x471d2b
mov byte [ebp + ebx - 0x840], 0xd
inc ebx
mov byte [ebp + ebx - 0x840], 0xa
inc ebx
mov byte [ebp + ebx - 0x840], 0
jmp 0x471da2
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0x3c]
jle 0x471d6a
lea edx, [ebp - 0x3c]
lea eax, [ebp - 0x38]
call fcn.004715fc
mov esi, dword [ebp - 0x3c]
sub esi, dword [ebp - 0x38]
test esi, esi
jle 0x471d94
mov edi, 1
lea eax, [ebp - 0x840]
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 0x471d7f
mov eax, dword [ebp - 0x3c]
sub eax, dword [ebp - 0x38]
mov byte [ebp + eax - 0x840], 0
lea eax, [ebp - 0x840]
call fcn.00420b7c
jmp 0x471f25
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.004053a0
mov edx, eax
inc edx
lea eax, [ebp - 0x840]
call fcn.00420bd4
lea edx, [ebp - 0x24]
lea eax, [ebp - 0x840]
call fcn.0040a098
mov eax, dword [ebp - 0x24]
call fcn.004053a0
mov esi, eax
test esi, esi
jle 0x471e0f
mov edi, 1
mov eax, dword [ebp - 0x24]
mov al, byte [eax + edi - 1]
cmp al, 0xd
je 0x471dfa
cmp al, 0xa
jne 0x471e0b
lea eax, [ebp - 0x24]
mov ecx, 0x3e7
mov edx, edi
call fcn.00405640
jmp 0x471e0f
inc edi
dec esi
jne 0x471deb
mov al, byte [ebp - 0x16]
and al, byte [0x4d72d4]
je 0x471e4a
call fcn.0046ff6c
call fcn.0046ff6c
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.004053a0
mov esi, eax
test esi, esi
jle 0x471e4a
mov edi, 1
mov eax, dword [ebp - 8]
call fcn.004055f8
mov byte [eax + edi - 1], 0x20
inc edi
dec esi
jne 0x471e39
cmp dword [ebp - 0x38], 0
jg 0x471e5e
mov eax, dword [ebp - 4]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0x3c], eax
jmp 0x471e64
mov eax, dword [ebp - 0x38]
mov dword [ebp - 4], eax
mov ebx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x24]
call fcn.004053a0
add eax, dword [ebp - 0x38]
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x858]
push eax
mov ecx, dword [ebp - 0x38]
dec ecx
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, 1
call fcn.00405600
push dword [ebp - 0x858]
push dword [ebp - 0x24]
lea eax, [ebp - 0x85c]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov ecx, 0x3e7
mov edx, ebx
call fcn.00405600
push dword [ebp - 0x85c]
lea eax, [ebp - 0x24]
mov edx, 3
call fcn.00405460
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.004053a0
push eax
mov eax, dword [ebp - 8]
call fcn.004055f8
mov cl, 0x20
pop edx
call fcn.00403690
lea eax, [ebp - 0x24]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.004053a0
mov ecx, eax
mov edx, 1
mov eax, dword [ebp - 0x24]
call fcn.00405600
mov eax, dword [ebp - 0x24]
call fcn.004053a0
mov esi, eax
test esi, esi
jle 0x471f25
mov edi, 1
mov eax, dword [ebp - 8]
call fcn.004055f8
mov edx, dword [ebp - 0x24]
mov dl, byte [edx + edi - 1]
mov byte [eax + edi - 1], dl
inc edi
dec esi
jne 0x471f0e
cmp byte [ebp - 0x3d], 0
je 0x4722d0
mov eax, dword [ebp - 4]
mov dword [ebp - 0x3c], eax
jmp 0x4722d0
mov eax, ebx
sub al, 3
je 0x471f54
sub al, 0x13
je 0x471f54
add al, 0x38
sub al, 2
jb 0x471f54
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, 0x15
jg 0x471fbd
je 0x472181
add eax, 0xfffffffd
cmp eax, 0x10
ja case.0x471f72.5
jmp dword [eax*4 + 0x471f79]
cmp eax, 0x1c
jg 0x471fe4
je 0x472209
sub eax, 0x16
je 0x472200
sub eax, 3
je 0x4721b1
sub eax, 2
je case.0x471f72.10
jmp case.0x471f72.5
sub eax, 0x7f
je 0x47201f
sub eax, 0x5f
je 0x471fff
dec eax
jne case.0x471f72.5
jmp 0x4722d0
call sub.user32.dll_WaitMessage
call fcn.0046fc28
test al, al
jne 0x471ffa
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00470338
jmp 0x4722d0
mov byte [ebp - 0x15], bl
jmp case.0x4718ed.60
cmp dword [ebp - 4], 1
jle 0x47203b
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
cmp byte [eax + edx - 2], 0x20
je 0x47203b
push ebp
call fcn.00471550
pop ecx
mov eax, dword [ebp - 4]
mov dword [ebp - 0x2c], eax
push ebp
call fcn.00471474
pop ecx
mov eax, dword [ebp - 4]
mov dword [ebp - 0x30], eax
push ebp
call fcn.00471550
pop ecx
mov edi, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x30]
dec esi
sub esi, edi
jl 0x4722d0
inc esi
push ebp
cmp edi, dword [ebp - 0x2c]
sete al
call fcn.00471148
pop ecx
inc edi
dec esi
jne 0x472065
jmp 0x4722d0
cmp dword [ebp - 4], 1
jne 0x47208b
call fcn.0046ffc0
jmp 0x4722d0
dec dword [ebp - 4]
push ebp
mov al, 1
call fcn.00471148
pop ecx
jmp 0x4722d0
lea edx, [ebp - 0x95c]
mov eax, dword [ebp - 4]
call fcn.00403aac
lea edx, [ebp - 0x95c]
lea eax, [ebp - 0x24]
call fcn.00405344
mov eax, dword [ebp - 0x24]
call fcn.00470338
jmp 0x4722d0
cmp byte [ebp + 8], 0
je 0x4722d0
mov edi, dword [ebp - 4]
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.004053a0
mov esi, eax
sub esi, edi
jl 0x4720f4
inc esi
mov eax, dword [ebp - 8]
call fcn.004055f8
mov byte [eax + edi - 1], 0x20
inc edi
dec esi
jne 0x4720e3
mov eax, 0x472428
call fcn.0046fdac
jmp 0x4722d0
cmp byte [ebp + 8], 0
je 0x4722d0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.004053a0
mov ebx, eax
sub ebx, dword [ebp - 4]
inc ebx
mov esi, ebx
test esi, esi
jle 0x472146
mov edi, 1
mov eax, dword [ebp - 8]
call fcn.004055f8
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 0x472128
lea edi, [ebx + 1]
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.004053a0
mov esi, eax
sub esi, edi
jl 0x47216b
inc esi
mov eax, dword [ebp - 8]
call fcn.004055f8
mov byte [eax + edi - 1], 0x20
inc edi
dec esi
jne 0x47215a
mov dword [ebp - 4], 1
mov eax, 0x472438
call fcn.0046fdac
jmp 0x4722d0
cmp byte [ebp + 8], 0
je 0x4722d0
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x28]
call fcn.00405134
mov dword [ebp - 4], 1
call fcn.0046ffc0
call fcn.0046ffc0
call fcn.0046ffc0
jmp 0x4722d0
cmp byte [ebp + 8], 0
je 0x4722d0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.004053a0
mov esi, eax
test esi, esi
jle 0x4721e1
mov edi, 1
mov eax, dword [ebp - 8]
call fcn.004055f8
mov byte [eax + edi - 1], 0x20
inc edi
dec esi
jne 0x4721d0
mov eax, 0x472448
call fcn.0046fdac
mov dword [ebp - 4], 1
jmp 0x4722d0
mov byte [ebp - 0x15], 0xff
jmp 0x4718d1
mov byte [ebp - 0x15], 0xfe
jmp 0x4718d1
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.004053a0
mov esi, eax
test esi, esi
jle 0x4722d0
mov edi, 1
lea eax, [ebp - 0x960]
mov edx, dword [ebp - 8]
mov edx, dword [edx]
mov dl, byte [edx + edi - 1]
call fcn.004052c8
mov eax, dword [ebp - 0x960]
call fcn.004709f4
inc edi
dec esi
jne 0x472222
jmp 0x4722d0
mov al, byte [ebp - 0x16]
and al, byte [0x4d72d4]
je 0x4722c2
mov byte [ebp - 0x1d], 0
mov edi, dword [ebp - 4]
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.004053a0
mov esi, eax
sub esi, edi
jl 0x472281
inc esi
mov eax, dword [ebp - 8]
mov eax, dword [eax]
cmp byte [eax + edi - 1], 0x20
je 0x47227d
mov byte [ebp - 0x1d], 1
inc edi
dec esi
jne 0x47226d
cmp byte [ebp - 0x1d], 0
je 0x4722c2
call fcn.0046ff6c
call fcn.0046ff6c
cmp bl, 0x20
setae al
and al, byte [ebp + 8]
je 0x4722c2
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.004053a0
mov esi, eax
test esi, esi
jle 0x4722c2
mov edi, 1
mov eax, dword [ebp - 8]
call fcn.004055f8
mov byte [eax + edi - 1], 0x20
inc edi
dec esi
jne 0x4722b1
cmp bl, 0x20
jb 0x4722d0
push ebp
mov eax, ebx
call fcn.00471074
pop ecx
mov byte [ebp - 0x16], 0
jmp 0x4716ed
mov bl, byte [ebp - 0x15]
mov eax, dword [ebp - 4]
mov dword [0x4d72c8], eax
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
call fcn.00420904
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.00405600
mov eax, dword [0x483518]
mov edx, dword [ebp - 0x1c]
call fcn.004057bc
call fcn.00403314
call fcn.00402c94
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
call fcn.00420904
mov eax, dword [ebp + 0x10]
inc eax
mov dword [ebp - 4], eax
dec dword [ebp - 4]
cmp dword [ebp - 4], 0
je 0x472346
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
cmp byte [eax + edx - 1], 0x20
je 0x47232e
cmp dword [ebp - 4], 0
jne 0x472356
mov eax, dword [ebp - 8]
call fcn.004050e0
jmp 0x47236c
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.00405600
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4723b9
lea eax, [ebp - 0x960]
call fcn.004050e0
lea eax, [ebp - 0x85c]
mov edx, 7
call fcn.00405104
lea eax, [ebp - 0x34]
call fcn.004050e0
lea eax, [ebp - 0x28]
mov edx, 2
call fcn.00405104
lea eax, [ebp - 0x1c]
call fcn.004050e0
ret