Function at 0x409c90
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x110
mov eax, dword [esp + 0x128]
mov dword [esp + 0x14], edx
push ebx
push ebp
push esi
mov esi, ecx
mov ecx, 0x3fff
mov dword [esp + 0x10], esi
mov dword [esp + 0x44], ecx
push edi
cmp eax, 0xffc3d44f
je 0x409cce
cmp eax, 0xffc3d44e
je 0x409cce
mov byte [esp + 0x1a], 0
cmp eax, 0xffc3d44d
jne 0x409cd3
mov byte [esp + 0x1a], 1
mov ecx, dword [0x4db794]
mov ebx, dword [esp + 0x12c]
test ecx, ecx
jne 0x409ced
lea edi, [esp + 0x4c]
jmp 0x409da2
mov eax, dword [0x4db7d0]
imul edi, eax, 0xd4
inc eax
add edi, ecx
xor ecx, ecx
cmp eax, dword [0x4d89c4]
cmovge eax, ecx
mov dword [0x4db7d0], eax
mov eax, dword [esp + 0x134]
mov byte [edi], bl
mov byte [edi + 6], al
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, eax
mov dword [0x4db7cc], eax
sub ecx, dword [0x4dec2c]
mov dword [0x4dec2c], eax
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
shr ecx, 0x1f
addsd xmm0, qword [ecx*8 + 0x4d3230]
cvtpd2ps xmm0, xmm0
divss xmm0, dword [0x4d3164]
movss dword [edi + 8], xmm0
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov ebp, eax
test ebp, ebp
je 0x409d88
cmp ebp, dword [0x4db7c8]
je 0x409d80
push ebp
lea ecx, [edi + 0xc]
push ecx
push 0x418
push dword [0x4db780]
call dword [sym.imp.USER32.dll_PostMessageW]
jmp 0x409d98
xor eax, eax
mov word [edi + 0xc], ax
jmp 0x409d98
mov eax, dword [0x4c7b94]
mov dword [edi + 0xc], eax
mov eax, dword [0x4c7b98]
mov dword [edi + 0x10], eax
mov edx, dword [esp + 0x24]
mov dword [0x4db7c8], ebp
cmp bl, 0xe7
jne 0x409def
mov ecx, dword [esp + 0x128]
mov ebx, 0x55
push 0x3fff
push edi
push dword [esp + 0x13c]
movzx eax, word [ecx + 4]
push eax
push 0xe7
push ecx
mov word [edi + 2], ax
mov ecx, esi
mov word [edi + 4], bx
push dword [esp + 0x13c]
call fcn.0040b690
add esp, 0x1c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x110
ret
mov ecx, dword [esp + 0x130]
mov al, bl
add al, 0x64
mov word [edi + 2], cx
mov dl, 3
cmp dl, al
sbb ebp, ebp
and ebp, ecx
cmp esi, dword [0x4db798]
jne 0x409e41
mov cl, byte [esp + 0x13c]
mov edx, dword [esp + 0x134]
and cl, 1
mov dword [esp + 0x1c], ecx
jne 0x409fcd
test dl, dl
movzx eax, bl
setne cl
dec cl
and cl, 0x80
mov byte [eax + 0x4dc110], cl
jmp 0x409fc9
mov ecx, dword [esp + 0x13c]
shr ecx, 4
and ecx, 0xffffff01
mov dword [esp + 0x1c], ecx
test ebp, 0x100
jne 0x409f6a
push 0x90
call dword [sym.imp.USER32.dll_GetKeyState]
test al, 1
je case.default.0x409e8a
movzx eax, bl
add eax, 0xfffffff4
cmp eax, 0x62
ja case.default.0x409e8a
movzx eax, byte [eax + 0x40b4c0]
jmp dword [eax*4 + 0x40b490]
mov edx, dword [esp + 0x134]
test dl, dl
sete byte [0x4dedec]
jmp 0x409f7a
mov edx, dword [esp + 0x134]
test dl, dl
sete byte [0x4deded]
jmp 0x409f7a
mov edx, dword [esp + 0x134]
test dl, dl
sete byte [0x4dedee]
jmp 0x409f7a
mov edx, dword [esp + 0x134]
test dl, dl
sete byte [0x4dedef]
jmp 0x409f7a
mov edx, dword [esp + 0x134]
test dl, dl
sete byte [0x4dedf0]
jmp 0x409f7a
mov edx, dword [esp + 0x134]
test dl, dl
sete byte [0x4dedf1]
jmp 0x409f7a
mov edx, dword [esp + 0x134]
test dl, dl
sete byte [0x4dedf2]
jmp 0x409f7a
mov edx, dword [esp + 0x134]
test dl, dl
sete byte [0x4dedf3]
jmp 0x409f7a
mov edx, dword [esp + 0x134]
test dl, dl
sete byte [0x4dedf4]
jmp 0x409f7a
mov edx, dword [esp + 0x134]
test dl, dl
sete byte [0x4dedf5]
jmp 0x409f7a
mov edx, dword [esp + 0x134]
test dl, dl
sete byte [0x4dedf6]
jmp 0x409f7a
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x134]
jmp 0x409f7e
mov edx, dword [esp + 0x134]
mov ecx, dword [esp + 0x1c]
mov esi, dword [0x4dc230]
movzx eax, bl
mov dword [esp + 0x30], eax
lea eax, [eax + eax*4]
cmp byte [esi + eax*4 + 8], 0
mov esi, dword [esp + 0x14]
jne 0x409fcd
mov ecx, dword [esp + 0x13c]
push edx
mov dl, bl
call fcn.0040ca20
mov edx, dword [esp + 0x138]
add esp, 4
test al, al
je 0x409fc9
mov ecx, dword [esp + 0x30]
test dl, dl
setne al
dec al
and al, 0x80
mov byte [ecx + 0x4dc110], al
mov ecx, dword [esp + 0x1c]
cmp byte [esp + 0x1a], 0
je 0x409fdb
mov eax, 0x69
jmp 0x409ff2
test cl, cl
mov dword [esp + 0x30], 0x61
mov eax, 0x20
cmovne eax, dword [esp + 0x30]
movzx eax, ax
cmp byte [0x4dc0ef], 0
mov word [edi + 4], ax
je 0x40a023
cmp bl, 0x5b
je 0x40a009
cmp bl, 0x5c
jne 0x40a023
test dl, dl
jne 0x40a023
push 0
push closesocket
push 0x3fff
push edi
push 0
mov ecx, esi
jmp 0x40b473
cmp byte [0x4dedda], 0
je 0x40a0cf
cmp bl, 0x1b
jne 0x40a0cf
test dl, dl
jne 0x40a0cf
push 0
push str.32771
call dword [sym.imp.USER32.dll_FindWindowW]
test eax, eax
je 0x40a0cf
push 0
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp esi, eax
jne 0x40a0cf
push 0xffc3d44d
push 0
push 0
push 0
mov dl, bl
xor ecx, ecx
call fcn.00413e60
mov dl, byte [0x4dc212]
mov ecx, 1
push 0xffc3d44d
shr dl, 3
push 0
and dl, 1
push 0
push 0
or dl, 0xa4
call fcn.00413e60
mov edx, dword [esp + 0x148]
mov ecx, dword [esp + 0x34]
push 0
push closesocket
push 0x3fff
push edi
push 0
push ebp
push 0x1b
call fcn.0040b560
add esp, 0x3c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x110
ret
movzx eax, bp
mov dword [esp + 0x30], eax
lea ecx, [eax + eax*4]
mov eax, dword [0x4dc22c]
lea esi, [eax + ecx*4]
mov eax, dword [esp + 0x14]
mov cl, byte [esi + 0x13]
mov byte [esp + 0x2b], cl
cmp eax, dword [0x4db79c]
jne 0x40a0f8
test cl, cl
jne 0x40a10b
mov ecx, dword [0x4dc230]
movzx eax, bl
lea eax, [eax + eax*4]
lea esi, [ecx + eax*4]
mov eax, dword [esp + 0x14]
cmp byte [esp + 0x1a], 0
je 0x40a176
cmp dword [esp + 0x138], 0xffc3d44e
mov eax, dword [esp + 0x134]
jne 0x40a144
test al, al
je 0x40a144
cmp dword [0x4deddc], esi
jne 0x40a144
mov byte [esi + 0xd], 0
mov byte [esi + 0x10], 0
mov dword [0x4deddc], 0
push 0x3fff
push edi
push eax
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x30]
push ebp
push ebx
push dword [esp + 0x13c]
push dword [esp + 0x13c]
call fcn.0040b690
add esp, 0x1c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x110
ret
mov ecx, dword [esp + 0x134]
mov edx, 0x3fff
test cl, cl
jne 0x40a18d
mov byte [esi + 0x11], cl
mov word [esi + 4], dx
cmp eax, dword [0x4db798]
jne 0x40a20a
test bl, bl
jne 0x40a1ca
mov edx, dword [esp + 0x24]
push 0x3fff
push edi
push ecx
push ebp
push 0
push dword [esp + 0x13c]
mov ecx, eax
push dword [esp + 0x13c]
call fcn.0040b690
add esp, 0x1c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x110
ret
cmp bl, 1
je 0x40a1d4
cmp bl, 2
jne 0x40a20a
cmp dword [0x4db444], 0
jne 0x40a235
push 0
push str.32768
call dword [sym.imp.USER32.dll_FindWindowW]
test eax, eax
je 0x40a1ff
push 0
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
cmp eax, dword [0x4de014]
je 0x40a22e
mov ecx, dword [esp + 0x134]
mov eax, dword [esp + 0x14]
mov edx, dword [0x4deddc]
test edx, edx
je 0x40a263
cmp edx, esi
je 0x40a263
test cl, cl
jne 0x40a263
cmp eax, dword [0x4db79c]
jne 0x40a24d
xor eax, eax
cmp byte [esi + 8], al
sete al
jmp 0x40a256
mov ecx, dword [esp + 0x134]
test cl, cl
mov byte [esi + 0x10], 0
sete al
mov byte [esi + 0xd], al
push 0x3fff
push edi
push ecx
jmp 0x40a14b
mov eax, dword [0x4deddc]
movzx eax, byte [eax + 8]
test eax, eax
je 0x40a263
mov eax, dword [0x4deddc]
mov byte [eax + 0x12], 1
cmp byte [esi + 9], 0
jne 0x40a26f
cmp byte [esi + 0xa], 0
je 0x40a241
mov dword [esp + 0x3c], 0
mov eax, 0x3fff
mov dword [esp + 0x1c], eax
mov dword [esp + 0x2c], eax
test cl, cl
je 0x40a2b6
mov dl, byte [esi + 0x10]
mov dh, byte [esi + 0xd]
movzx eax, word [esi + 4]
mov byte [esp + 0x13], dh
mov byte [esp + 0x23], dl
mov edx, 0x3fff
mov byte [esi + 0x10], 0
cmp ax, dx
je 0x40a2c6
mov dword [esp + 0x1c], eax
mov dword [esp + 0x2c], eax
mov word [esi + 4], dx
jmp 0x40a2c6
mov al, byte [esp + 0x13]
mov byte [esp + 0x13], al
mov al, byte [esp + 0x13]
mov byte [esp + 0x23], al
test cl, cl
mov byte [esp + 0x12], 0
sete al
mov byte [esi + 0xd], al
mov eax, dword [esp + 0x14]
cmp eax, dword [0x4db79c]
jne 0x40a359
cmp byte [esi + 8], 0
je 0x40a37f
mov eax, dword [0x4dc230]
cmp byte [eax + 0xcb5], 0
jne 0x40a304
cmp byte [eax + 0xcc9], 0
jne 0x40a304
xor edx, edx
jmp 0x40a309
mov edx, 1
cmp byte [eax + 0xcdd], 0
mov byte [eax + 0x161], dl
jne 0x40a325
cmp byte [eax + 0xcf1], 0
jne 0x40a325
xor edx, edx
jmp 0x40a32a
mov edx, 1
cmp byte [eax + 0xc8d], 0
mov byte [eax + 0x175], dl
jne 0x40a34c
cmp byte [eax + 0xca1], 0
jne 0x40a34c
xor edx, edx
mov byte [eax + 0x14d], dl
jmp 0x40a37f
mov edx, 1
mov byte [eax + 0x14d], dl
jmp 0x40a37f
cmp dword [0x4db79c], 0
jne 0x40a37f
mov cl, 1
call fcn.00416310
mov ecx, dword [esp + 0x134]
mov byte [0x4dc211], al
mov byte [0x4dc212], al
mov byte [esp + 0x12], 1
mov eax, dword [esi]
test eax, eax
je 0x40a38f
cmp dword [eax], 7
mov byte [esp + 0x1a], 1
je 0x40a394
mov byte [esp + 0x1a], 0
mov al, byte [esi + 9]
test al, al
je 0x40a504
test cl, cl
jne 0x40a504
mov edx, dword [0x4deddc]
test edx, edx
je 0x40a3be
cmp byte [esi + 0xa], cl
je 0x40a3be
cmp esi, edx
jne 0x40a504
cmp al, 1
jne 0x40a3e3
mov al, byte [esp + 0x2b]
mov ecx, dword [esp + 0x30]
test al, al
jne 0x40a3d1
movzx ecx, bl
mov dl, al
call fcn.0040f110
test al, al
je 0x40a3e3
mov byte [esp + 0x1b], 1
jmp 0x40a3fa
mov byte [esp + 0x1b], 0
cmp esi, dword [0x4deddc]
je 0x40a3fa
mov dword [0x4deddc], esi
mov byte [esi + 0x12], 0
cmp byte [esi + 0xa], 0
je 0x40a4a5
cmp byte [esp + 0x12], 0
jne 0x40a417
mov cl, 1
mov byte [esp + 0x12], 1
call fcn.00416310
mov al, byte [esi + 8]
mov cl, byte [0x4dc211]
test al, al
je 0x40a428
not al
and cl, al
test cl, cl
jne 0x40a438
cmp byte [esp + 0x1b], cl
jne 0x40a438
test byte [esi + 0xc], 1
je 0x40a4a5
mov eax, dword [esp + 0x14]
cmp eax, dword [0x4db79c]
jne 0x40a45c
cmp byte [esp + 0x2b], 0
je 0x40a45c
mov eax, dword [0x4dc238]
movzx ecx, cl
shl ecx, 9
add ecx, dword [esp + 0x30]
jmp 0x40a46c
movzx ecx, cl
movzx eax, bl
shl ecx, 8
add ecx, eax
mov eax, dword [0x4dc23c]
movzx ecx, word [eax + ecx*2]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x1c], ecx
test ecx, 0x4000
je 0x40a486
mov word [esi + 4], cx
jmp 0x40a4b3
mov eax, ecx
and eax, 0x3fff
cmp ax, word [0x4dd210]
jae 0x40a4a9
mov ecx, eax
mov eax, dword [0x4dc234]
mov ax, word [eax + ecx*2]
mov word [esi + 4], ax
mov ecx, dword [esp + 0x1c]
mov eax, 0x3fff
cmp cx, ax
jne 0x40a508
mov al, byte [esp + 0x1b]
test al, al
je 0x40a4c8
or byte [esi + 0xc], 8
mov edx, 0x23
mov word [edi + 4], dx
cmp byte [esi + 8], 0
jne 0x40a4f7
test byte [esi + 0xc], 1
jne 0x40a4f7
cmp byte [esp + 0x1a], 0
jne 0x40a4f7
test al, al
jne 0x40a4f7
push 0
push closesocket
push 0x3fff
push edi
mov byte [esi + 0x11], 1
push 0
jmp 0x40b46f
push 0x3fff
push edi
push 0
jmp 0x40a14b
mov ecx, dword [esp + 0x1c]
cmp byte [esi + 0xa], 0
mov eax, dword [esp + 0x134]
mov byte [esp + 0x1b], 0
je 0x40a578
test al, al
je 0x40a578
mov dh, byte [esp + 0x23]
cmp dword [0x4deddc], esi
jne 0x40a538
test dh, dh
je 0x40a578
mov dword [0x4deddc], 0
cmp byte [esi + 0xb], 0
jne 0x40a573
mov cl, byte [esi + 0xc]
test cl, 8
je 0x40a550
xor dl, dl
and cl, 0xf7
mov byte [esi + 0xc], cl
jmp 0x40a552
mov dl, 1
test dh, dh
je 0x40a144
test dl, dl
je 0x40a144
push 0
push closesocket
push 0x3fff
jmp 0x40b46d
mov byte [esp + 0x1b], 1
cmp byte [esi + 9], 0
je 0x40a737
test al, al
je 0x40a737
mov edx, dword [0x4deddc]
xor eax, eax
cmp edx, esi
cmove edx, eax
mov dword [0x4deddc], edx
cmp byte [esi + 0xe], al
je 0x40a5ba
push 0xffc3d44d
push eax
push eax
push eax
mov dl, 0x12
mov byte [esi + 0xe], al
lea ecx, [eax + 1]
call fcn.00413e60
add esp, 0x10
cmp byte [esi + 0xf], 0
je 0x40a5de
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x10
mov byte [esi + 0xf], 0
mov ecx, 1
call fcn.00413e60
add esp, 0x10
mov ecx, dword [esp + 0x1c]
mov edx, 0x3fff
cmp cx, dx
jne 0x40a60a
mov al, byte [esi + 0xc]
test al, 8
je 0x40a60a
and al, 0xf7
mov byte [esi + 0xc], al
push 0x3fff
push edi
push dword [esp + 0x13c]
jmp 0x40a14b
mov al, byte [esp + 0x1a]
test al, al
je 0x40a68f
mov al, byte [esi + 0x12]
cmp al, 2
jne 0x40a679
push 0xffc3d44e
push 0
push 0
push ebp
mov dl, bl
mov ecx, 1
call fcn.00413e60
push 0xffc3d44d
push 0
push 0
push ebp
mov dl, bl
mov ecx, 2
call fcn.00413e60
mov edx, dword [esp + 0x148]
mov ecx, dword [esp + 0x34]
push 0
push closesocket
push 0x3fff
push edi
push dword [esp + 0x164]
push ebp
push ebx
call fcn.0040b560
add esp, 0x3c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x110
ret
cmp al, 1
jne 0x40a6d9
push 0x3fff
push edi
push dword [esp + 0x13c]
jmp 0x40a14b
cmp byte [esi + 0x12], 0
je 0x40a6dd
cmp cx, dx
jne 0x40a6dd
cmp byte [esi + 8], 0
jne 0x40a5f8
test byte [esi + 0xc], 1
mov ecx, dword [esp + 0x14]
je 0x40a6c0
push 0x3fff
push edi
push dword [esp + 0x13c]
jmp 0x40a14f
push 0
push closesocket
push 0x3fff
push edi
push dword [esp + 0x144]
jmp 0x40b473
mov al, byte [esp + 0x1a]
cmp byte [esi + 0xa], 0
jne 0x40a718
cmp byte [esi + 8], 0
jne 0x40a5f8
test byte [esi + 0xc], 1
jne 0x40a5f8
test al, al
jne 0x40a5f8
push 0
push closesocket
push 0x3fff
push edi
push dword [esp + 0x144]
jmp 0x40b46f
cmp byte [esp + 0x13], 0
jne 0x40a73c
cmp byte [esi + 0xb], 0
jne 0x40a73c
push 0x3fff
push edi
push dword [esp + 0x13c]
jmp 0x40a14b
mov edx, 0x3fff
cmp byte [esp + 0x12], 0
jne 0x40a753
cmp cx, dx
jne 0x40a753
mov cl, 1
call fcn.00416310
mov ecx, dword [esp + 0x1c]
cmp dword [0x4deddc], 0
mov byte [esp + 0x12], 0
mov dword [esp + 0x44], 0x3ffd
je 0x40ab8d
mov edx, dword [esp + 0x134]
test dl, dl
je 0x40a782
cmp byte [esi + 0xb], 0
je 0x40ab8d
mov eax, 0x3fff
cmp cx, ax
jne 0x40adf6
xor eax, eax
mov edx, 0x3fff
mov dword [esp + 0x34], eax
movzx eax, word [esi + 6]
cmp ax, dx
mov dword [esp + 0x38], eax
mov edx, dword [esp + 0x134]
je 0x40a98d
mov ecx, eax
nop word [eax + eax]
movzx eax, cx
mov ecx, dword [eax*4 + 0x4dc268]
mov dword [esp + 0x40], ecx
mov al, byte [ecx + 0x11]
test al, al
je 0x40a7ed
mov ebx, dword [0x4dc230]
movzx eax, al
lea eax, [eax + eax*4]
lea eax, [ebx + eax*4]
mov ebx, dword [esp + 0x12c]
jmp 0x40a800
movzx eax, word [ecx + 0xa]
lea ecx, [eax + eax*4]
mov eax, dword [0x4dc22c]
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x40]
cmp byte [eax + 0xd], 0
je 0x40a835
cmp byte [ecx + 0x16], 0
je 0x40a822
test dl, dl
jne 0x40a858
mov ax, word [ecx + 4]
mov word [esi + 4], ax
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x40a866
jmp 0x40a839
mov eax, dword [esp + 0x34]
test dl, dl
jne 0x40a839
test eax, eax
cmove eax, ecx
mov dword [esp + 0x34], eax
jmp 0x40a839
mov eax, dword [esp + 0x34]
movzx ecx, word [ecx + 0xc]
mov ebx, 0x3fff
cmp cx, bx
mov dword [esp + 0x38], ecx
mov ebx, dword [esp + 0x12c]
jne 0x40a7c0
jmp 0x40a85e
mov eax, ecx
mov dword [esp + 0x34], eax
test eax, eax
je 0x40a985
movzx ecx, byte [eax + 0x11]
cmp ecx, 0x12
ja case.0x40a87a.1
movzx eax, byte [ecx + 0x40b538]
jmp dword [eax*4 + 0x40b524]
mov ecx, dword [0x4dc230]
mov eax, 0xc80
mov dword [esp + 0x40], 0xc94
cmp byte [ecx + 0xca1], 0
cmovne eax, dword [esp + 0x40]
add eax, ecx
jmp 0x40a90b
mov ecx, dword [0x4dc230]
mov eax, 0xca8
mov dword [esp + 0x40], 0xcbc
cmp byte [ecx + 0xcc9], 0
cmovne eax, dword [esp + 0x40]
add eax, ecx
jmp 0x40a90b
mov ecx, dword [0x4dc230]
mov eax, 0xcd0
mov dword [esp + 0x40], 0xce4
cmp byte [ecx + 0xcf1], 0
cmovne eax, dword [esp + 0x40]
add eax, ecx
jmp 0x40a90b
mov eax, dword [esp + 0x34]
movzx eax, word [eax + 0xa]
lea ecx, [eax + eax*4]
mov eax, dword [0x4dc22c]
lea eax, [eax + ecx*4]
jmp 0x40a90b
lea eax, [ecx + ecx*4]
mov ecx, dword [0x4dc230]
lea eax, [ecx + eax*4]
mov dword [0x4deddc], eax
mov eax, dword [esp + 0x34]
movzx ecx, word [eax + 6]
test cx, cx
je 0x40a933
movzx eax, cx
mov dword [esp + 0x38], eax
mov eax, dword [0x4deddc]
mov dword [esp + 0x2c], ecx
mov byte [eax + 0x12], 2
jmp 0x40a989
movzx eax, word [eax + 4]
lea ecx, [edi + 4]
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x12]
push ecx
push eax
lea eax, [esi + 0xc]
push eax
mov eax, dword [esp + 0x144]
lea ecx, [esp + 0x38]
push eax
call fcn.0040f340
add esp, 0x10
mov dword [esp + 0x3c], eax
test eax, eax
je 0x40a5f8
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x134]
movzx eax, cx
mov dword [esp + 0x38], eax
mov eax, dword [0x4deddc]
mov byte [eax + 0x12], 2
jmp 0x40a989
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x38]
mov dword [esp + 0x34], 0x3ffe
cmp ax, word [esp + 0x34]
je 0x40a9a7
cmp ax, word [esp + 0x44]
jne 0x40ab8d
test dl, dl
jne 0x40a9af
mov byte [esi + 0x10], 1
test byte [0x4dc212], 0xc
jne 0x40a9d6
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x12
xor ecx, ecx
call fcn.00413e60
mov edx, dword [esp + 0x144]
add esp, 0x10
cmp bl, 0xa2
je 0x40a9e0
cmp bl, 0xa3
jne 0x40a9fd
test dl, dl
jne 0x40a9fd
push 0xffc3d44d
push 0
push 0
push ebp
mov dl, bl
mov ecx, 1
call fcn.00413e60
add esp, 0x10
mov eax, dword [0x4deddc]
mov ecx, 0x3ffd
mov byte [eax + 0xe], 1
mov eax, dword [esp + 0x38]
cmp ax, cx
jne 0x40aa3f
test byte [0x4dc212], 0x30
jne 0x40aa34
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x10
xor ecx, ecx
call fcn.00413e60
add esp, 0x10
mov eax, dword [0x4deddc]
mov byte [eax + 0xf], 1
jmp 0x40aab9
cmp ax, word [esp + 0x34]
jne 0x40aab9
cmp bl, 0xa0
je 0x40aa50
cmp bl, 0xa1
jne 0x40aa73
cmp byte [esp + 0x134], 0
jne 0x40aa73
push 0xffc3d44d
push 0
push 0
push ebp
mov dl, bl
mov ecx, 1
call fcn.00413e60
add esp, 0x10
test byte [0x4dc212], 0x10
je 0x40aa96
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0xa0
mov ecx, 1
call fcn.00413e60
add esp, 0x10
test byte [0x4dc212], 0x20
je 0x40aab9
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0xa1
mov ecx, 1
call fcn.00413e60
add esp, 0x10
test byte [0x4dc212], 1
je 0x40aadc
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0xa2
mov ecx, 1
call fcn.00413e60
add esp, 0x10
test byte [0x4dc212], 2
je 0x40aaff
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0xa3
mov ecx, 1
call fcn.00413e60
add esp, 0x10
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 9
mov ecx, 2
call fcn.00413e60
mov eax, dword [esp + 0x48]
mov ecx, 0x3ffd
add esp, 0x10
cmp ax, cx
jne 0x40ab64
mov eax, dword [0x4deddc]
cmp byte [eax + 0xf], 0
je 0x40ab64
cmp bl, 0x60
jb 0x40ab3c
cmp bl, 0x69
jbe 0x40ab41
cmp bl, 0x6e
jne 0x40ab64
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x10
mov ecx, 1
call fcn.00413e60
mov eax, dword [0x4deddc]
add esp, 0x10
mov byte [eax + 0xf], 0
mov eax, dword [esp + 0x134]
mov ecx, 0x68
mov word [edi + 4], cx
test al, al
jne 0x40ab7c
mov byte [esi + 0x11], 1
push 0
push closesocket
push 0x3fff
jmp 0x40b46d
mov eax, 0x3fff
cmp cx, ax
jne 0x40adef
mov cl, byte [esi + 8]
mov al, byte [0x4dc211]
mov byte [esp + 0x13], al
test cl, cl
je 0x40abb3
not cl
and al, cl
mov byte [esp + 0x13], al
mov edx, dword [esp + 0x14]
cmp edx, dword [0x4db79c]
jne 0x40abd7
cmp byte [esp + 0x2b], 0
je 0x40abd7
movzx ecx, al
mov eax, dword [0x4dc238]
shl ecx, 9
add ecx, dword [esp + 0x30]
jmp 0x40abe7
movzx ecx, al
movzx eax, bl
shl ecx, 8
add ecx, eax
mov eax, dword [0x4dc23c]
movzx ecx, word [eax + ecx*2]
mov eax, 0x3fff
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x1c], ecx
cmp cx, ax
jne 0x40ac7b
cmp byte [0x4dedda], 0
je 0x40ac7b
cmp bl, 9
je 0x40ac7b
mov al, byte [esp + 0x13]
and al, 0xf3
cmp edx, dword [0x4db79c]
jne 0x40ac31
cmp byte [esp + 0x2b], 0
je 0x40ac31
movzx ecx, al
mov eax, dword [0x4dc238]
shl ecx, 9
add ecx, dword [esp + 0x30]
jmp 0x40ac41
movzx ecx, al
movzx eax, bl
shl ecx, 8
add ecx, eax
mov eax, dword [0x4dc23c]
movzx ecx, word [eax + ecx*2]
mov edx, 0x3ff9
mov eax, ecx
mov dword [esp + 0x2c], ecx
and eax, 0x3fff
mov dword [esp + 0x1c], ecx
cmp ax, dx
jbe 0x40ac68
mov edx, 0x3fff
cmp ax, dx
jb 0x40ac79
mov ecx, 0x3fff
mov dword [esp + 0x1c], ecx
mov eax, ecx
mov dword [esp + 0x2c], ecx
jmp 0x40ac7b
mov eax, edx
test ecx, 0x4000
je 0x40acda
mov edx, dword [esp + 0x134]
test dl, dl
jne 0x40ad9c
mov word [esi + 4], cx
lea ecx, [esi + 4]
mov eax, 0x3fff
cmp word [ecx], ax
je 0x40a4f7
push 0
lea eax, [esp + 0x16]
mov dl, 1
push eax
lea eax, [esi + 0xc]
push eax
push 0
call fcn.0040f340
mov ecx, dword [esp + 0x24]
add esp, 0x10
cmp byte [esp + 0x12], 0
je 0x40aed4
push 0x3fff
push edi
push 0
jmp 0x40a14f
cmp cx, ax
je 0x40ada6
mov edx, dword [esp + 0x134]
mov eax, ecx
and eax, 0x3fff
test dl, dl
je 0x40ad80
cmp ax, word [0x4dd210]
jae 0x40ad77
add eax, eax
mov edx, 0x3fff
mov dword [esp + 0x30], eax
mov ebx, eax
mov eax, dword [0x4dc234]
cmp word [ebx + eax], dx
mov ebx, dword [esp + 0x12c]
mov edx, dword [esp + 0x134]
je 0x40ad77
cmp byte [esp + 0x1b], 0
jne 0x40ad64
lea eax, [edi + 4]
push eax
lea eax, [esp + 0x16]
push eax
lea eax, [esi + 0xc]
push eax
push dword [esp + 0x144]
lea ecx, [esp + 0x3c]
call fcn.0040f340
mov edx, dword [esp + 0x144]
add esp, 0x10
mov dword [esp + 0x3c], eax
test eax, eax
je 0x40ad64
mov ecx, dword [esp + 0x2c]
jmp 0x40ad9c
mov eax, dword [0x4dc234]
mov ecx, dword [esp + 0x30]
movzx ecx, word [ecx + eax]
mov dword [esp + 0x2c], ecx
jmp 0x40ad9c
cmp byte [esp + 0x1b], 0
jne 0x40ada6
jmp 0x40ad9c
cmp ax, word [0x4dd210]
jae 0x40ad9c
mov ecx, eax
mov eax, dword [0x4dc234]
mov ax, word [eax + ecx*2]
mov ecx, dword [esp + 0x1c]
mov word [esi + 4], ax
mov eax, 0x3fff
cmp cx, ax
jne 0x40adf6
mov eax, dword [esp + 0x134]
test al, al
je 0x40ac96
cmp byte [esi + 8], 0
jne 0x40a144
test byte [esi + 0xc], 1
jne 0x40a144
cmp byte [esi + 9], 0
je 0x40a144
cmp byte [esp + 0x1a], 0
jne 0x40a144
push 0
push closesocket
push 0x3fff
jmp 0x40b46d
mov edx, dword [esp + 0x134]
lea eax, [esi + 0xc]
mov dword [esp + 0x40], eax
mov al, byte [eax]
test al, 8
je 0x40ae11
test dl, dl
je 0x40ae11
and al, 0xf7
mov byte [esp + 0x12], 1
mov byte [esi + 0xc], al
mov eax, ecx
and eax, 0x3fff
cmp ax, word [0x4dd210]
jae 0x40aeec
cmp dword [esp + 0x3c], 0
jne 0x40aeec
lea eax, [edi + 4]
push eax
lea eax, [esp + 0x16]
push eax
lea eax, [esi + 0xc]
push eax
push dword [esp + 0x144]
lea ecx, [esp + 0x3c]
call fcn.0040f340
add esp, 0x10
mov dword [esp + 0x3c], eax
test eax, eax
jne 0x40aee8
mov eax, dword [esp + 0x134]
test al, al
je 0x40ae90
cmp byte [esi + 0x11], 0
mov ecx, dword [esp + 0x14]
je 0x40ae84
push 0
push closesocket
push 0x3fff
push edi
push eax
jmp 0x40b473
push 0x3fff
push edi
push eax
jmp 0x40a14f
lea ecx, [esi + 4]
mov eax, 0x3fff
cmp word [ecx], ax
je 0x40a4f7
push 0
lea eax, [esp + 0x16]
mov byte [esp + 0x16], 0
push eax
lea eax, [esi + 0xc]
mov dl, 1
push eax
push 0
call fcn.0040f340
mov ecx, dword [esp + 0x24]
add esp, 0x10
cmp byte [esp + 0x12], 0
jne 0x40accd
and byte [esi + 0xc], 0xf7
mov byte [esi + 0x11], 1
push 0
push closesocket
push 0x3fff
push edi
push 0
jmp 0x40b473
mov ecx, dword [esp + 0x2c]
and ecx, 0x3fff
test byte [0x4dc212], 0xcc
mov dword [esp + 0x1c], ecx
je 0x40af96
cmp byte [esp + 0x12], 0
jne 0x40af96
cmp byte [0x4dedd9], 0
jne 0x40af23
mov eax, dword [esp + 0x14]
cmp eax, dword [0x4db798]
jne 0x40af9a
test byte [0x4dc212], 0xc0
mov dh, byte [0x4dc210]
je 0x40af4f
test dh, 0xc0
jne 0x40af42
mov dl, 0xc0
call fcn.0040f5d0
test al, al
je 0x40af4b
mov byte [0x4dedd8], 1
jmp 0x40af96
mov ecx, dword [esp + 0x1c]
cmp byte [0x4dedd8], 0
jne 0x40af96
mov al, byte [0x4dc212]
test al, 0xc
je 0x40af96
test al, 3
jne 0x40af96
test dh, 0xc
jne 0x40af75
mov dl, 0xc
call fcn.0040f5d0
test al, al
je 0x40af96
cmp dword [0x4db79c], 0
je 0x40af87
mov byte [0x4dedd8], 1
jmp 0x40af96
mov edx, 0xffc3d44d
mov ecx, 2
call fcn.004144d0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
movzx edx, cx
mov dword [esp + 0x44], edx
add edx, 0xffffc006
cmp edx, 4
ja case.default.0x40afb4
jmp dword [edx*4 + 0x40b54c]
cmp byte [0x4dedda], 0
jne case.0x40afb4.16379
push 0x3fff
push edi
push dword [esp + 0x13c]
mov ecx, eax
jmp 0x40a14f
xor dl, dl
test byte [0x4dc212], 4
je 0x40afea
mov edx, 0xa4
jmp 0x40b001
test byte [0x4dc212], 8
movzx edx, dl
mov dword [esp + 0x44], 0xa5
cmovne edx, dword [esp + 0x44]
cmp byte [0x4dedda], 0
mov dword [esp + 0x38], edx
je 0x40b08c
mov dword [esp + 0x44], 0x3ffb
cmp cx, word [esp + 0x44]
je case.0x40afb4.16381
movzx eax, dl
test dl, dl
jne 0x40b02d
mov eax, 0x12
push 0xffc3d44d
push 0
push 0
push 0
mov dl, al
mov ecx, 1
call fcn.00413e60
add esp, 0x10
cmp byte [esi + 8], 0
je 0x40b07b
cmp bl, 0x5b
je 0x40b07b
cmp bl, 0x5c
je 0x40b07b
cmp byte [esp + 0x134], 0
jne 0x40b07b
push 0xffc3d44d
push 0
push 0
push 0
mov dl, bl
mov ecx, 1
call fcn.00413e60
add esp, 0x10
mov byte [0x4dedda], 0
mov edx, 0x3fff
jmp 0x40b32f
cmp bl, 0xa4
je 0x40b09b
mov byte [esp + 0x23], 0
cmp bl, 0xa5
jne 0x40b0a0
mov byte [esp + 0x23], 1
cmp bl, 0xa0
je 0x40b0ae
cmp bl, 0xa1
je 0x40b0ae
xor cl, cl
jmp 0x40b0b0
mov cl, 1
mov byte [esp + 0x1b], cl
cmp bl, 0xa2
je 0x40b0c3
mov byte [esp + 0x13], 0
cmp bl, 0xa3
jne 0x40b0c8
mov byte [esp + 0x13], 1
xor dl, dl
test byte [0x4dc212], 0x10
mov dword [esp + 0x3c], edx
je 0x40b0db
mov dl, 0xa0
jmp 0x40b0fe
test byte [0x4dc212], 0x20
mov eax, dword [esp + 0x134]
je 0x40b0ef
mov dl, 0xa1
jmp 0x40b105
test al, al
jne 0x40b109
test cl, cl
movzx edx, dl
movzx eax, bl
cmovne edx, eax
mov eax, dword [esp + 0x134]
mov dword [esp + 0x3c], edx
xor cl, cl
test byte [0x4dc212], 1
mov dword [esp + 0x30], ecx
je 0x40b11f
mov byte [esp + 0x30], 0xa2
jmp 0x40b145
test byte [0x4dc212], 2
je 0x40b12f
mov byte [esp + 0x30], 0xa3
jmp 0x40b145
test al, al
jne 0x40b145
cmp byte [esp + 0x13], 0
movzx ecx, cl
movzx eax, bl
cmovne ecx, eax
mov dword [esp + 0x30], ecx
mov byte [esp + 0x13], 0
test dl, dl
je 0x40b16b
push 0xffc3d44d
push 0
push 0
push 0
mov ecx, 1
call fcn.00413e60
add esp, 0x10
mov byte [esp + 0x13], 1
mov eax, dword [esp + 0x30]
test al, al
je 0x40b18d
push 0xffc3d44d
push 0
push 0
push 0
mov dl, al
mov ecx, 1
call fcn.00413e60
add esp, 0x10
cmp byte [esp + 0x23], 0
je 0x40b1a2
cmp byte [esp + 0x134], 0
jne 0x40b1aa
mov al, bl
jmp 0x40b1a6
mov eax, dword [esp + 0x38]
test al, al
jne 0x40b1c1
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x12
xor ecx, ecx
call fcn.00413e60
add esp, 0x10
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 9
mov ecx, 2
call fcn.00413e60
add esp, 0x10
cmp byte [esp + 0x13], 0
je 0x40b202
cmp byte [esp + 0x1b], 0
jne 0x40b202
mov dl, byte [esp + 0x3c]
xor ecx, ecx
push 0xffc3d44d
push 0
push 0
push 0
call fcn.00413e60
add esp, 0x10
mov byte [0x4dedda], 1
mov edx, 0x3fff
jmp 0x40b32f
cmp byte [0x4dedda], 0
je 0x40afc4
mov eax, dword [esp + 0x134]
test al, al
jne 0x40b260
cmp bl, 0xa2
je 0x40b23f
cmp bl, 0xa3
je 0x40b23f
cmp bl, 0xa0
je 0x40b23f
cmp bl, 0xa1
jne 0x40b260
push 0xffc3d44d
push 0
push 0
push 0
mov dl, bl
mov ecx, 1
call fcn.00413e60
mov eax, dword [esp + 0x144]
add esp, 0x10
test byte [0x4dc212], 0xc
je 0x40b277
test al, al
je 0x40b28e
cmp bl, 0xa4
je 0x40b277
cmp bl, 0xa5
jne 0x40b28e
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x12
xor ecx, ecx
call fcn.00413e60
add esp, 0x10
mov eax, 0x3ffd
mov byte [esp + 0x13], 0
cmp word [esp + 0x1c], ax
jne 0x40b2c4
test byte [0x4dc212], 0x30
jne 0x40b2c4
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x10
xor ecx, ecx
call fcn.00413e60
add esp, 0x10
mov byte [esp + 0x13], 1
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 9
mov ecx, 2
call fcn.00413e60
add esp, 0x10
cmp byte [esp + 0x13], 0
je 0x40b082
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x10
mov ecx, 1
call fcn.00413e60
add esp, 0x10
mov edx, 0x3fff
jmp 0x40b32f
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x44]
mov dword [esp + 0x48], edx
mov eax, dword [ecx + 4]
test eax, eax
je 0x40b32f
cmp byte [eax], 5
jb 0x40b32f
movzx eax, word [ecx + 0x14]
shl eax, 0x10
or edx, eax
mov dword [esp + 0x48], edx
cmp byte [esp + 0x1a], 0
mov ecx, 0x68
mov eax, dword [esp + 0x134]
mov word [edi + 4], cx
je 0x40b3b4
test al, al
je 0x40b3ff
cmp byte [esi + 9], 0
je 0x40b3b4
push 0xffc3d44e
push 0
push 0
push ebp
mov dl, bl
mov ecx, 1
call fcn.00413e60
push 0xffc3d44d
push 0
push 0
push ebp
mov dl, bl
mov ecx, 2
call fcn.00413e60
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x148]
push 0
push closesocket
push ecx
mov ecx, dword [esp + 0x40]
push edi
push dword [esp + 0x164]
push ebp
push ebx
call fcn.0040b560
add esp, 0x3c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x110
ret
test al, al
je 0x40b3ff
cmp byte [esi + 8], 0
je 0x40b3df
cmp byte [esi + 0x11], 0
mov ecx, dword [esp + 0x14]
je 0x40b3d7
push 0
push closesocket
push edx
push edi
push eax
jmp 0x40b473
push edx
push edi
push eax
jmp 0x40a14f
cmp byte [esp + 0x12], 0
je 0x40b459
mov ecx, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x28]
push edi
push eax
push ebp
push ebx
push dword [esp + 0x13c]
jmp 0x409dd5
mov edx, dword [0x4deddc]
mov byte [esi + 0x10], 1
test edx, edx
je 0x40b417
cmp byte [edx + 8], 0
je 0x40b417
mov byte [edx + 0x12], 2
cmp byte [esp + 0x12], 0
je 0x40b42f
mov ecx, dword [esp + 0x40]
or byte [ecx], 8
mov ecx, dword [esp + 0x48]
push ecx
jmp 0x40a149
cmp bl, 0xa4
je 0x40b439
cmp bl, 0xa5
jne 0x40b459
push 0xffc3d450
push 0
push 0
push ebp
mov dl, bl
mov ecx, 1
call fcn.00413e60
mov eax, dword [esp + 0x144]
add esp, 0x10
test al, al
jne 0x40b461
mov byte [esi + 0x11], 1
mov ecx, dword [esp + 0x48]
push 0
push closesocket
push ecx
push edi
push eax
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x13c]
push ebp
push ebx
call fcn.0040b560
add esp, 0x1c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x110
ret