Function at 0x410140
Capabilities:
Check for time delay via gettickcount
Encrypt data using speck

Disassembly:
sub esp, 0x110
push ebx
push ebp
mov eax, 0x7fff
mov dword [esp + 0x20], edx
push esi
push edi
mov di, word [esp + 0x130]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x138]
mov dword [esp + 0x1c], ecx
movzx edx, di
cmp eax, 0xffc3d44f
je 0x410187
cmp eax, 0xffc3d44e
je 0x410187
mov byte [esp + 0x1b], 0
cmp eax, 0xffc3d44d
jne 0x41018c
mov byte [esp + 0x1b], 1
mov ecx, dword [0x4fba10]
mov ebp, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, dword [esp + 0x12c]
test ecx, ecx
jne 0x4101b0
lea esi, [esp + 0x4c]
mov dword [esp + 0x14], esi
jmp 0x41026f
mov eax, dword [0x4fba84]
imul esi, eax, 0xd4
inc eax
mov dword [0x4fba84], eax
add esi, ecx
mov dword [esp + 0x14], esi
cmp eax, dword [0x4f90f8]
jl 0x4101d9
mov dword [0x4fba84], 0
mov eax, dword [esp + 0x134]
mov byte [esi], bl
mov byte [esi + 6], al
call ebp
mov ecx, eax
mov dword [0x4fba80], eax
sub ecx, dword [0x4fe878]
mov dword [0x4fe878], eax
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
shr ecx, 0x1f
addsd xmm0, qword [ecx*8 + 0x4f3090]
cvtpd2ps xmm0, xmm0
divss xmm0, dword [0x4f2f74]
movss dword [esi + 8], xmm0
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov ecx, dword [esp + 0x14]
mov esi, eax
add ecx, 0xc
test esi, esi
je 0x410255
cmp esi, dword [0x4fba7c]
je 0x41024e
push esi
push ecx
push 0x418
push dword [0x4fba00]
call dword [sym.imp.USER32.dll_PostMessageW]
jmp 0x410262
xor eax, eax
mov word [ecx], ax
jmp 0x410262
mov dword [ecx], 0x2f004e
mov dword [ecx + 4], 0x41
mov dword [0x4fba7c], esi
mov esi, dword [esp + 0x14]
movzx edx, di
cmp bl, 0xe7
jne 0x4102cb
mov ecx, dword [esp + 0x128]
mov ebp, dword [esp + 0x138]
push 0x7fff
push esi
mov ax, word [ecx + 4]
push ebp
push dword [esp + 0x140]
mov word [esi + 2], ax
mov eax, 0x55
push 0
push 0xe7
push ecx
mov ecx, dword [esp + 0x38]
mov word [esi + 4], ax
push dword [esp + 0x140]
mov edx, dword [esp + 0x48]
call fcn.00411c90
add esp, 0x20
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x110
ret
mov al, bl
mov word [esi + 2], di
add al, 0x64
mov cl, 3
cmp cl, al
mov esi, 0x20
sbb eax, eax
and eax, edx
mov edx, dword [0x4fe8c0]
movzx eax, ax
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x1c]
cmp eax, dword [0x4fba14]
jne 0x410324
mov cl, byte [esp + 0x13c]
and cl, 1
mov dword [esp + 0x34], ecx
jne 0x4103a5
mov al, byte [esp + 0x134]
movzx ecx, bl
xor al, 1
shl al, 7
mov byte [ecx + 0x4fc3f8], al
jmp 0x4103a1
mov ecx, dword [esp + 0x13c]
movzx edi, bl
shr ecx, 4
and ecx, 0xffffff01
mov dword [esp + 0x34], ecx
lea eax, [edi + edi*4]
cmp byte [edx + eax*4 + 8], 0
jne 0x4103a5
test byte [esp + 0x13c], 0x10
jne 0x4103a5
cmp bl, 0xa0
je 0x410359
cmp bl, 0xa1
jne 0x41037d
cmp byte [esp + 0x134], 0
jne 0x41037d
cmp bl, 0xa0
mov dword [esp + 0x3c], 0x10
mov eax, esi
cmove eax, dword [esp + 0x3c]
test byte [0x4fbaae], al
jne 0x4103a5
call ebp
mov edx, dword [0x4fe8c0]
mov dword [0x4fe880], eax
mov dword [0x4fe87c], eax
mov al, byte [esp + 0x134]
xor al, 1
shl al, 7
mov byte [edi + 0x4fc3f8], al
mov ecx, dword [esp + 0x34]
cmp byte [esp + 0x1b], 0
je 0x4103b3
mov eax, 0x69
jmp 0x4103c0
mov eax, 0x61
test cl, cl
cmovne esi, eax
movzx eax, si
cmp byte [0x4fbaaa], 0
mov edi, dword [esp + 0x14]
lea ecx, [edi + 4]
mov word [ecx], ax
mov dword [esp + 0x40], ecx
je 0x410408
cmp bl, 0x5b
je 0x4103e1
cmp bl, 0x5c
jne 0x410408
mov eax, dword [esp + 0x134]
test al, al
jne 0x41040f
mov ebp, dword [esp + 0x138]
push 0
push closesocket
push 0x7fff
push edi
push ebp
push 0
jmp 0x411ae3
mov eax, dword [esp + 0x134]
cmp byte [0x4fd2fe], 0
mov esi, dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov ebp, dword [sym.imp.USER32.dll_FindWindowW]
je 0x4104bd
cmp bl, 0x1b
jne 0x4104bd
test al, al
jne 0x4104bd
push 0
push str.32771
call ebp
test eax, eax
je 0x4104b7
push 0
push eax
call esi
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp esi, eax
jne 0x4104b1
push 0xffc3d44d
push 0
push 0
push 0
mov dl, bl
xor ecx, ecx
call fcn.0041c230
mov dl, byte [0x4fbbd5]
mov ecx, 1
push 0xffc3d44d
shr dl, 3
push 0
and dl, 1
push 0
push 0
or dl, 0xa4
call fcn.0041c230
mov ebp, dword [esp + 0x158]
add esp, 0x20
push 0
push closesocket
push 0x7fff
push edi
push ebp
push 0
push ecx
push 0x1b
jmp 0x411ae5
mov esi, dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov edx, dword [0x4fe8c0]
mov eax, dword [esp + 0x24]
movzx eax, ax
mov dword [esp + 0x34], eax
lea ecx, [eax + eax*4]
mov eax, dword [0x4fe8c4]
lea edi, [eax + ecx*4]
mov eax, dword [esp + 0x1c]
mov cl, byte [edi + 0x13]
mov byte [esp + 0x13], cl
cmp eax, dword [0x4fba18]
jne 0x4104ea
test cl, cl
jne 0x4104f7
movzx eax, bl
lea eax, [eax + eax*4]
lea edi, [edx + eax*4]
mov eax, dword [esp + 0x1c]
cmp byte [esp + 0x1b], 0
je 0x41056c
mov ecx, dword [esp + 0x138]
mov eax, dword [esp + 0x134]
cmp ecx, 0xffc3d44e
jne 0x410532
test al, al
je 0x410532
cmp dword [0x4fc53c], edi
jne 0x410532
mov byte [edi + 0xd], 0
mov byte [edi + 0x10], 0
mov dword [0x4fc53c], 0
mov edx, dword [esp + 0x14]
push 0x7fff
push edx
push ecx
push eax
mov ecx, dword [esp + 0x2c]
push dword [esp + 0x34]
mov edx, dword [esp + 0x3c]
push ebx
push dword [esp + 0x140]
push dword [esp + 0x140]
call fcn.00411c90
add esp, 0x20
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x110
ret
mov ecx, dword [esp + 0x134]
mov edx, 0x7fff
test cl, cl
jne 0x410583
mov byte [edi + 0x11], cl
mov word [edi + 4], dx
cmp eax, dword [0x4fba14]
jne 0x410603
test bl, bl
jne 0x4105cf
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x138]
push 0x7fff
push edx
mov edx, dword [esp + 0x30]
push ebp
push ecx
push dword [esp + 0x34]
mov ecx, eax
push 0
push dword [esp + 0x140]
push dword [esp + 0x140]
call fcn.00411c90
add esp, 0x20
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x110
ret
cmp bl, 1
je 0x4105d9
cmp bl, 2
jne 0x410603
cmp dword [0x4fb9d0], 0
jne 0x410631
push 0
push str.32768
call ebp
test eax, eax
je 0x4105fc
push 0
push eax
call esi
cmp eax, dword [0x4fdb70]
je 0x41062a
mov ecx, dword [esp + 0x134]
mov eax, dword [0x4fc53c]
mov esi, dword [esp + 0x1c]
test eax, eax
je 0x41066a
cmp eax, edi
je 0x41066a
test cl, cl
jne 0x41066a
cmp esi, dword [0x4fba18]
jne 0x410654
xor eax, eax
cmp byte [edi + 8], al
sete al
jmp 0x41065d
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x14]
mov al, cl
mov ebp, dword [esp + 0x138]
xor al, 1
push 0x7fff
push edx
push ebp
mov byte [edi + 0x10], 0
mov byte [edi + 0xd], al
push ecx
jmp 0x41053e
mov eax, dword [0x4fc53c]
movzx eax, byte [eax + 8]
test eax, eax
je 0x41066a
mov eax, dword [0x4fc53c]
mov byte [eax + 0x12], 1
cmp byte [edi + 9], 0
jne 0x410697
cmp byte [edi + 0xa], 0
jne 0x410697
mov al, cl
xor al, 1
mov byte [edi + 0xd], al
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x138]
push 0x7fff
push edx
push ebp
push ecx
mov ecx, esi
jmp 0x410542
mov dword [esp + 0x38], 0
mov ebp, 0x7fff
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x30], ebp
test cl, cl
je 0x4106dd
mov dh, byte [edi + 0x10]
mov al, byte [edi + 0xd]
mov byte [esp + 0x12], al
movzx eax, word [edi + 4]
mov byte [esp + 0x11], dh
mov edx, ebp
mov byte [edi + 0x10], 0
cmp ax, dx
je 0x4106ed
mov ebp, eax
mov word [edi + 4], dx
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x30], ebp
jmp 0x4106ed
mov al, byte [esp + 0x12]
mov byte [esp + 0x12], al
mov al, byte [esp + 0x12]
mov byte [esp + 0x11], al
mov al, cl
xor dl, dl
xor al, 1
mov byte [edi + 0xd], al
cmp esi, dword [0x4fba18]
jne 0x41076c
cmp byte [edi + 8], dl
je 0x410788
mov eax, dword [0x4fe8c0]
cmp byte [eax + 0xcb5], dl
jne 0x410720
cmp byte [eax + 0xcc9], dl
jne 0x410720
xor cl, cl
jmp 0x410722
mov cl, 1
cmp byte [eax + 0xcdd], 0
mov byte [eax + 0x161], cl
jne 0x41073e
cmp byte [eax + 0xcf1], 0
jne 0x41073e
xor cl, cl
jmp 0x410740
mov cl, 1
cmp byte [eax + 0xc8d], 0
mov byte [eax + 0x175], cl
jne 0x410762
cmp byte [eax + 0xca1], 0
jne 0x410762
xor cl, cl
mov byte [eax + 0x14d], cl
jmp 0x410788
mov cl, 1
mov byte [eax + 0x14d], cl
jmp 0x410788
cmp dword [0x4fba18], 0
jne 0x410788
mov cl, 1
call fcn.0041eb40
mov byte [0x4fbbd4], al
mov dl, 1
mov byte [0x4fbbd5], al
mov eax, dword [edi]
test eax, eax
je 0x410798
cmp dword [eax], 7
mov byte [esp + 0x1b], 1
je 0x41079d
mov byte [esp + 0x1b], 0
test dl, dl
jne 0x4107a8
mov cl, 1
call fcn.0041eb40
mov dl, byte [edi + 9]
mov ecx, dword [esp + 0x134]
test dl, dl
je 0x410a40
test cl, cl
jne 0x410a40
mov eax, dword [0x4fc53c]
test eax, eax
je 0x4107d8
cmp byte [edi + 0xa], cl
je 0x4107d8
cmp edi, eax
jne 0x410a40
cmp dl, 1
jne 0x410889
cmp byte [esp + 0x13], 0
mov ecx, dword [esp + 0x34]
jne 0x4107ef
movzx ecx, bl
xor edx, edx
movzx eax, cx
cmp byte [esp + 0x13], dl
mov dword [esp + 0x44], ecx
cmovne edx, eax
movzx ecx, cl
xor eax, eax
cmp byte [esp + 0x13], al
push 0
cmovne ecx, eax
call fcn.0041ed50
mov ch, al
xor edx, edx
xor eax, eax
mov byte [esp + 0x27], ch
add esp, 4
mov dword [esp + 0x3c], edx
cmp ax, word [0x4fc56c]
jae 0x41096d
mov cl, byte [0x4fb8c4]
nop word [eax + eax]
cmp byte [esp + 0x13], 0
mov eax, dword [0x4fc55c]
mov ebp, dword [eax + edx*4]
je 0x410855
movzx eax, word [ebp + 0xa]
jmp 0x410859
movzx eax, byte [ebp + 0x11]
cmp dword [esp + 0x44], eax
je 0x410868
test byte [ebp + 0xe], ch
je 0x410955
cmp word [ebp + 6], 0
je 0x4108f4
cmp byte [ebp + 0x19], 0
je 0x410955
test cl, cl
jne 0x410955
mov esi, dword [esp + 0x1c]
xor dl, dl
cmp edi, dword [0x4fc53c]
je 0x41089c
mov dword [0x4fc53c], edi
mov byte [edi + 0x12], dl
cmp byte [edi + 0xa], 0
je 0x4109bd
mov al, byte [edi + 8]
mov cl, byte [0x4fbbd4]
test al, al
je 0x4108b7
not al
and cl, al
test cl, cl
jne 0x4108c9
test dl, dl
jne 0x4108c9
test byte [edi + 0xc], 1
je 0x4109bd
cmp esi, dword [0x4fba18]
jne 0x410974
cmp byte [esp + 0x13], 0
je 0x410974
mov eax, dword [0x4fe8b8]
movzx ecx, cl
shl ecx, 9
add ecx, dword [esp + 0x34]
jmp 0x410984
mov esi, dword [ebp + 0x20]
mov eax, esi
test eax, eax
je 0x410955
nop dword [eax]
cmp byte [eax + 0x1c], 0
jne 0x410910
mov eax, dword [eax + 8]
test eax, eax
jne 0x410900
jmp 0x410955
cmp byte [esi + 0x1c], 0
je 0x410946
test cl, cl
je 0x410925
mov ecx, esi
call fcn.004a0950
test al, al
je 0x410940
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x410885
mov edx, dword [ebp + 0x1c]
call fcn.00414e00
test eax, eax
jne 0x410885
mov cl, byte [0x4fb8c4]
mov esi, dword [esi + 8]
test esi, esi
jne 0x410910
mov edx, dword [esp + 0x3c]
mov ch, byte [esp + 0x23]
movzx eax, word [0x4fc56c]
inc edx
mov dword [esp + 0x3c], edx
cmp edx, eax
jl 0x410840
mov esi, dword [esp + 0x1c]
mov dl, 1
jmp 0x41089c
movzx ecx, cl
movzx eax, bl
shl ecx, 8
add ecx, eax
mov eax, dword [0x4fe8b4]
movzx eax, word [eax + ecx*2]
movzx ebp, ax
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x30], ebp
test ax, ax
jns 0x41099e
mov word [edi + 4], ax
jmp 0x4109cb
and eax, 0x7fff
cmp ax, word [0x4fc56c]
jae 0x4109c1
mov ecx, eax
mov eax, dword [0x4fe8bc]
mov ax, word [eax + ecx*2]
mov word [edi + 4], ax
jmp 0x4109c1
mov ebp, dword [esp + 0x2c]
mov eax, 0x7fff
cmp bp, ax
jne 0x410a39
test dl, dl
je 0x4109df
mov eax, dword [esp + 0x40]
mov ecx, 0x23
or byte [edi + 0xc], 8
mov word [eax], cx
cmp byte [edi + 8], 0
jne 0x410a1e
test byte [edi + 0xc], 1
jne 0x410a1e
cmp byte [esp + 0x1b], 0
jne 0x410a1e
test dl, dl
jne 0x410a1e
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x138]
push 0
push closesocket
push 0x7fff
push edx
push ebp
push 0
push ecx
mov byte [edi + 0x11], 1
mov ecx, esi
push ebx
jmp 0x411ae9
mov ebp, dword [esp + 0x138]
mov edx, dword [esp + 0x14]
push 0x7fff
push edx
push ebp
push 0
mov ecx, esi
jmp 0x410542
mov ecx, dword [esp + 0x134]
cmp byte [edi + 0xa], 0
mov byte [esp + 0x23], 0
je 0x410ab9
test cl, cl
je 0x410ab9
mov ah, byte [esp + 0x11]
cmp dword [0x4fc53c], edi
jne 0x410a69
test ah, ah
je 0x410ab9
mov dword [0x4fc53c], 0
cmp byte [edi + 0xb], 0
jne 0x410ab4
mov al, byte [edi + 0xc]
test al, 8
je 0x410a7f
xor dl, dl
and al, 0xf7
mov byte [edi + 0xc], al
jmp 0x410a81
mov dl, 1
test ah, ah
je 0x41067d
test dl, dl
je 0x41067d
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x138]
push 0
push closesocket
push 0x7fff
push edx
push ebp
push ecx
push ecx
push ebx
mov ecx, esi
jmp 0x411ae9
mov byte [esp + 0x23], 1
cmp byte [edi + 9], 0
je 0x410c90
test cl, cl
je 0x410c90
cmp dword [0x4fc53c], edi
jne 0x410add
mov dword [0x4fc53c], 0
cmp byte [edi + 0xe], 0
je 0x410b01
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x12
mov byte [edi + 0xe], 0
mov ecx, 1
call fcn.0041c230
add esp, 0x10
cmp byte [edi + 0xf], 0
je 0x410b25
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x10
mov byte [edi + 0xf], 0
mov ecx, 1
call fcn.0041c230
add esp, 0x10
mov edx, 0x7fff
cmp bp, dx
jne 0x410b5b
mov al, byte [edi + 0xc]
test al, 8
je 0x410b5b
and al, 0xf7
mov byte [edi + 0xc], al
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x138]
push 0x7fff
push edx
push ebp
push dword [esp + 0x140]
mov ecx, esi
jmp 0x410542
mov cl, byte [esp + 0x1b]
mov al, byte [edi + 0x12]
test cl, cl
je 0x410bee
cmp al, 2
jne 0x410bca
mov ebp, dword [esp + 0x24]
mov dl, bl
push 0xffc3d44e
push 0
push 0
push ebp
mov ecx, 1
call fcn.0041c230
push 0xffc3d44d
push 0
push 0
push ebp
mov dl, bl
mov ecx, 2
call fcn.0041c230
mov edx, dword [esp + 0x34]
add esp, 0x20
mov ebp, dword [esp + 0x138]
push 0
push closesocket
push 0x7fff
push edx
push ebp
push dword [esp + 0x148]
push ecx
push ebx
mov ecx, esi
jmp 0x411ae9
cmp al, 1
jne 0x410c34
mov edx, dword [esp + 0x14]
mov ecx, esi
mov ebp, dword [esp + 0x138]
push 0x7fff
push edx
push ebp
push dword [esp + 0x140]
jmp 0x410542
test al, al
je 0x410c34
cmp bp, dx
jne 0x410c34
cmp byte [edi + 8], 0
jne 0x410b3b
test byte [edi + 0xc], 1
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x138]
jne 0x410b46
push 0
push closesocket
push 0x7fff
push edx
push ebp
push dword [esp + 0x148]
push ecx
push ebx
mov ecx, esi
jmp 0x411ae9
cmp byte [edi + 0xa], 0
jne 0x410c7f
cmp byte [edi + 8], 0
jne 0x410b3b
test byte [edi + 0xc], 1
jne 0x410b3b
test cl, cl
jne 0x410b3b
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x138]
push 0
push closesocket
push 0x7fff
push edx
push ebp
push dword [esp + 0x148]
push ecx
push ebx
mov ecx, esi
jmp 0x411ae9
cmp byte [esp + 0x12], 0
jne 0x410c90
cmp byte [edi + 0xb], 0
je 0x410b3b
cmp dword [0x4fc53c], 0
mov edx, 0x7ffd
mov byte [esp + 0x11], 0
je 0x41108b
mov ecx, dword [esp + 0x134]
test cl, cl
je 0x410cbc
cmp byte [edi + 0xb], 0
je 0x41108b
mov eax, 0x7fff
cmp bp, ax
jne 0x411294
movzx ebp, word [edi + 6]
xor esi, esi
cmp bp, ax
je 0x410e78
nop dword [eax]
mov eax, dword [0x4fc55c]
movzx ecx, bp
mov edx, dword [eax + ecx*4]
mov al, byte [edx + 0x11]
test al, al
jne 0x410d0a
cmp word [edx + 0xa], 0
je 0x410d5e
movzx eax, word [edx + 0xa]
lea ecx, [eax + eax*4]
mov eax, dword [0x4fe8c4]
lea eax, [eax + ecx*4]
jmp 0x410d19
mov ecx, dword [0x4fe8c0]
movzx eax, al
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
cmp byte [eax + 0xd], 0
movzx ebp, word [edx + 0xc]
je 0x410d50
cmp byte [edx + 0x16], 0
je 0x410d41
cmp byte [esp + 0x134], 0
jne 0x410d5c
mov ax, word [edx + 4]
mov word [edi + 4], ax
test esi, esi
jne 0x410d66
jmp 0x410d50
cmp byte [esp + 0x134], 0
jne 0x410d50
test esi, esi
cmove esi, edx
mov eax, 0x7fff
cmp bp, ax
jne 0x410ce0
jmp 0x410d5e
mov esi, edx
test esi, esi
je 0x410e6c
movzx ecx, byte [esi + 0x11]
cmp ecx, 0x12
ja case.0x410d76.1
movzx eax, byte [ecx + 0x411b18]
jmp dword [eax*4 + 0x411b04]
mov ecx, dword [0x4fe8c0]
mov eax, 0xc80
mov edx, 0xc94
cmp byte [ecx + 0xca1], 0
cmovne eax, edx
add eax, ecx
jmp 0x410df4
mov ecx, dword [0x4fe8c0]
mov eax, 0xca8
mov edx, 0xcbc
cmp byte [ecx + 0xcc9], 0
cmovne eax, edx
add eax, ecx
jmp 0x410df4
mov ecx, dword [0x4fe8c0]
mov eax, 0xcd0
mov edx, 0xce4
cmp byte [ecx + 0xcf1], 0
cmovne eax, edx
add eax, ecx
jmp 0x410df4
movzx eax, word [esi + 0xa]
lea ecx, [eax + eax*4]
mov eax, dword [0x4fe8c4]
lea eax, [eax + ecx*4]
jmp 0x410df4
lea eax, [ecx + ecx*4]
mov ecx, dword [0x4fe8c0]
lea eax, [ecx + eax*4]
mov dword [0x4fc53c], eax
movzx eax, word [esi + 6]
test ax, ax
je 0x410e08
mov dword [esp + 0x30], eax
jmp 0x410e5c
movzx eax, word [esi + 4]
lea ecx, [esp + 0x30]
mov ebp, dword [esp + 0x138]
mov dl, byte [esp + 0x134]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x40]
push eax
lea eax, [esp + 0x15]
push eax
lea eax, [edi + 0xc]
push eax
push ebp
call fcn.004158e0
add esp, 0x10
mov dword [esp + 0x38], eax
test eax, eax
jne 0x410e58
mov edx, dword [esp + 0x14]
push 0x7fff
push edx
push ebp
push dword [esp + 0x140]
jmp 0x41053e
mov eax, dword [esp + 0x30]
mov dword [esp + 0x2c], eax
movzx ebp, ax
mov eax, dword [0x4fc53c]
mov byte [eax + 0x12], 2
mov ecx, dword [esp + 0x134]
mov edx, 0x7ffd
mov eax, 0x7ffe
cmp bp, ax
je 0x410e8b
cmp bp, dx
jne 0x411087
test cl, cl
jne 0x410e93
mov byte [edi + 0x10], 1
test byte [0x4fbbd5], 0xc
jne 0x410eba
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x12
xor ecx, ecx
call fcn.0041c230
mov ecx, dword [esp + 0x144]
add esp, 0x10
cmp bl, 0xa2
je 0x410ec4
cmp bl, 0xa3
jne 0x410ee7
mov esi, dword [esp + 0x24]
test cl, cl
jne 0x410eeb
push 0xffc3d44d
push 0
push 0
push esi
mov dl, bl
mov ecx, 1
call fcn.0041c230
add esp, 0x10
jmp 0x410eeb
mov esi, dword [esp + 0x24]
mov eax, dword [0x4fc53c]
mov ecx, 0x7ffd
mov byte [eax + 0xe], 1
cmp bp, cx
jne 0x410f29
test byte [0x4fbbd5], 0x30
jne 0x410f1e
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x10
xor ecx, ecx
call fcn.0041c230
add esp, 0x10
mov eax, dword [0x4fc53c]
mov byte [eax + 0xf], 1
jmp 0x410fa6
mov eax, 0x7ffe
cmp bp, ax
jne 0x410fa6
cmp bl, 0xa0
je 0x410f3d
cmp bl, 0xa1
jne 0x410f60
cmp byte [esp + 0x134], 0
jne 0x410f60
push 0xffc3d44d
push 0
push 0
push esi
mov dl, bl
mov ecx, 1
call fcn.0041c230
add esp, 0x10
test byte [0x4fbbd5], 0x10
je 0x410f83
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0xa0
mov ecx, 1
call fcn.0041c230
add esp, 0x10
test byte [0x4fbbd5], 0x20
je 0x410fa6
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0xa1
mov ecx, 1
call fcn.0041c230
add esp, 0x10
test byte [0x4fbbd5], 1
je 0x410fc9
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0xa2
mov ecx, 1
call fcn.0041c230
add esp, 0x10
test byte [0x4fbbd5], 2
je 0x410fec
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0xa3
mov ecx, 1
call fcn.0041c230
add esp, 0x10
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 9
mov ecx, 2
call fcn.0041c230
mov eax, 0x7ffd
add esp, 0x10
cmp bp, ax
jne 0x41104d
mov eax, dword [0x4fc53c]
cmp byte [eax + 0xf], 0
je 0x41104d
cmp bl, 0x60
jb 0x411025
cmp bl, 0x69
jbe 0x41102a
cmp bl, 0x6e
jne 0x41104d
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x10
mov ecx, 1
call fcn.0041c230
mov eax, dword [0x4fc53c]
add esp, 0x10
mov byte [eax + 0xf], 0
mov eax, dword [esp + 0x40]
mov ecx, 0x68
mov word [eax], cx
mov eax, dword [esp + 0x134]
test al, al
jne 0x411068
mov byte [edi + 0x11], 1
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x138]
push 0
push closesocket
push 0x7fff
push edx
push ebp
push eax
jmp 0x411ae3
mov ebp, dword [esp + 0x2c]
mov edx, 0x7fff
cmp bp, dx
jne 0x4114ce
mov al, byte [edi + 8]
mov dl, byte [0x4fbbd4]
test al, al
je 0x4110aa
not al
and dl, al
mov eax, dword [esp + 0x1c]
mov dh, byte [esp + 0x13]
cmp eax, dword [0x4fba18]
jne 0x4110da
test dh, dh
je 0x4110da
mov eax, dword [0x4fe8b8]
movzx ecx, dl
shl ecx, 9
add ecx, dword [esp + 0x34]
movzx ecx, word [eax + ecx*2]
movzx eax, bl
mov dword [esp + 0x44], eax
jmp 0x4110f2
movzx eax, bl
movzx ecx, dl
shl ecx, 8
add ecx, eax
mov dword [esp + 0x44], eax
mov eax, dword [0x4fe8b4]
movzx ecx, word [eax + ecx*2]
movzx eax, cx
mov ebx, 0x7fff
mov dword [esp + 0x3c], ecx
mov esi, eax
cmp word [esp + 0x3c], bx
mov ebp, eax
mov ebx, dword [esp + 0x12c]
movzx ecx, cx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], ecx
mov ecx, eax
jne 0x411197
cmp byte [0x4fd2fe], 0
je 0x411197
cmp bl, 9
je 0x411197
mov esi, dword [esp + 0x1c]
and dl, 0xf3
cmp esi, dword [0x4fba18]
jne 0x41114f
test dh, dh
je 0x41114f
mov eax, dword [0x4fe8b8]
movzx ecx, dl
shl ecx, 9
add ecx, dword [esp + 0x34]
jmp 0x41115e
mov eax, dword [0x4fe8b4]
movzx ecx, dl
shl ecx, 8
add ecx, dword [esp + 0x44]
movzx eax, word [eax + ecx*2]
movzx ecx, ax
movzx edx, ax
and eax, 0x7fff
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], ecx
mov ecx, 0x7ff9
cmp ax, cx
jbe 0x411418
mov ecx, edx
mov esi, edx
mov ebp, edx
mov edx, 0x7fff
cmp ax, dx
jae 0x41140f
test cx, cx
movzx eax, bp
mov ecx, dword [esp + 0x134]
movzx edx, si
jns 0x41133e
mov eax, dword [esp + 0x2c]
test cl, cl
jne 0x411403
mov word [edi + 4], ax
mov ebp, 0x7fff
mov ah, byte [0x4fbbd4]
mov al, ah
and al, 0xc0
movzx ecx, al
neg ecx
sbb ecx, ecx
and ecx, 8
mov edx, ecx
or edx, 1
test ah, 0xc
cmove edx, ecx
mov ecx, edx
or ecx, 4
test ah, 0x30
cmove ecx, edx
movzx edx, word [edi + 6]
mov esi, ecx
or esi, 2
test ah, 3
cmove esi, ecx
cmp dx, bp
je 0x411263
mov eax, dword [0x4fc55c]
movzx ecx, dx
mov ecx, dword [eax + ecx*4]
cmp byte [ecx + 0x15], 0
movzx edx, word [ecx + 0xc]
jne 0x41122a
movzx eax, byte [ecx + 0xf]
mov ebx, dword [esp + 0x12c]
not eax
test byte [0x4fbbd4], al
jne 0x41125e
cmp byte [ecx + 0x16], 0
jne 0x41125e
cmp byte [ecx + 0x11], 0
jne 0x41125e
cmp word [ecx + 0xa], 0
jne 0x41125e
cmp word [ecx + 6], 0
jne 0x41125e
mov eax, esi
not eax
test dword [ecx], eax
jne 0x41125e
movzx eax, byte [0x4fbbd4]
not eax
test byte [ecx + 0xe], al
je 0x411335
cmp dx, bp
jne 0x411200
mov eax, ebp
movzx ecx, ax
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x134]
mov ebp, dword [esp + 0x138]
mov eax, dword [esp + 0x2c]
mov edx, 0x7fff
cmp ax, dx
je 0x411439
mov ebp, dword [esp + 0x2c]
mov al, byte [edi + 0xc]
lea esi, [edi + 0xc]
test al, 8
je 0x4112ab
test cl, cl
je 0x4112ab
and al, 0xf7
mov byte [esp + 0x11], 1
mov byte [esi], al
mov eax, ebp
mov ebp, dword [esp + 0x138]
and eax, 0x7fff
cmp ax, word [0x4fc56c]
jae 0x411554
cmp dword [esp + 0x38], 0
jne 0x411554
push dword [esp + 0x40]
lea eax, [esp + 0x15]
mov dl, cl
push eax
push esi
push ebp
lea ecx, [esp + 0x40]
call fcn.004158e0
add esp, 0x10
mov dword [esp + 0x38], eax
test eax, eax
jne 0x41154e
mov eax, dword [esp + 0x40]
cmp word [eax], 0x69
je 0x410e41
mov eax, dword [esp + 0x134]
test al, al
je 0x4114e6
cmp byte [edi + 0x11], 0
mov edx, dword [esp + 0x14]
je 0x4114da
push 0
push closesocket
push 0x7fff
push edx
push ebp
push eax
jmp 0x411ae3
movzx eax, word [ecx + 4]
jmp 0x411265
mov ebp, 0x7fff
cmp dx, bp
je 0x41142d
and eax, ebp
test cl, cl
je 0x4113e2
cmp ax, word [0x4fc56c]
jae 0x4113cf
mov esi, eax
mov eax, dword [0x4fe8bc]
cmp word [eax + esi*2], bp
je 0x4113cf
cmp byte [esp + 0x23], 0
mov ebp, dword [esp + 0x138]
jne 0x4113b9
push dword [esp + 0x40]
lea eax, [esp + 0x15]
mov dl, cl
push eax
lea eax, [edi + 0xc]
push eax
push ebp
lea ecx, [esp + 0x40]
call fcn.004158e0
add esp, 0x10
mov dword [esp + 0x38], eax
test eax, eax
je 0x4113b2
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x134]
jmp 0x41127e
mov ecx, dword [esp + 0x134]
mov eax, dword [0x4fe8bc]
movzx eax, word [eax + esi*2]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
jmp 0x411282
cmp byte [esp + 0x23], 0
mov ebp, dword [esp + 0x138]
jne 0x411441
jmp 0x41127e
cmp ax, word [0x4fc56c]
jae 0x411277
mov ecx, eax
mov eax, dword [0x4fe8bc]
mov ax, word [eax + ecx*2]
mov word [edi + 4], ax
jmp 0x411270
mov ebp, dword [esp + 0x138]
jmp 0x411282
mov ecx, dword [esp + 0x134]
jmp 0x411432
mov ecx, dword [esp + 0x134]
mov edx, 0x7fff
mov ebp, dword [esp + 0x138]
jmp 0x41143d
mov edx, 0x7fff
mov ebp, dword [esp + 0x138]
mov esi, dword [esp + 0x1c]
test cl, cl
je 0x41147c
cmp byte [edi + 8], 0
jne 0x41146b
test byte [edi + 0xc], 1
jne 0x41146b
cmp byte [edi + 9], 0
je 0x41146b
cmp byte [esp + 0x1b], 0
jne 0x41146b
push 0
push closesocket
push 0x7fff
jmp 0x411adc
mov edx, dword [esp + 0x14]
push 0x7fff
push edx
push ebp
push ecx
jmp 0x41053e
cmp word [edi + 4], dx
lea ecx, [edi + 4]
je 0x410a25
mov ebp, dword [esp + 0x138]
lea eax, [esp + 0x11]
push 0
push eax
lea eax, [edi + 0xc]
mov dl, 1
push eax
push ebp
call fcn.004158e0
mov edx, dword [esp + 0x24]
add esp, 0x10
cmp byte [esp + 0x11], 0
jne 0x410a29
push 0
push closesocket
push 0x7fff
push edx
push ebp
push 0
push ecx
push ebx
mov ecx, esi
jmp 0x411ae9
mov ecx, dword [esp + 0x134]
jmp 0x411294
push 0x7fff
push edx
push ebp
jmp 0x41053d
lea ecx, [edi + 4]
mov eax, 0x7fff
cmp word [ecx], ax
jne 0x411501
mov edx, dword [esp + 0x14]
push eax
push edx
push ebp
push 0
jmp 0x41053e
push 0
lea eax, [esp + 0x15]
mov byte [esp + 0x15], 0
push eax
push esi
push ebp
mov dl, 1
call fcn.004158e0
mov edx, dword [esp + 0x24]
add esp, 0x10
cmp byte [esp + 0x11], 0
je 0x411532
push 0x7fff
push edx
push ebp
push 0
jmp 0x41053e
and byte [esi], 0xf7
push 0
push closesocket
push 0x7fff
push edx
push ebp
mov byte [edi + 0x11], 1
push 0
jmp 0x411ae3
mov ecx, dword [esp + 0x30]
jmp 0x411558
mov ecx, dword [esp + 0x2c]
and ecx, 0x7fff
test byte [0x4fbbd5], 0xcc
mov dword [esp + 0x2c], ecx
je 0x411639
cmp byte [esp + 0x11], 0
jne 0x411639
cmp byte [0x4fd2fd], 0
jne 0x411593
mov eax, dword [esp + 0x1c]
cmp eax, dword [0x4fba14]
jne 0x411639
test byte [0x4fbbd5], 0xc0
mov dl, byte [0x4fbaaf]
je 0x4115ce
test dl, 0xc0
jne 0x4115c1
cmp cx, word [0x4fc56c]
jae 0x4115ce
mov eax, dword [0x4fc55c]
movzx ecx, cx
mov eax, dword [eax + ecx*4]
test byte [eax + 0xf], 0xc0
je 0x4115ca
mov byte [0x4fd2fc], 1
jmp 0x411639
mov ecx, dword [esp + 0x2c]
cmp byte [0x4fd2fc], 0
jne 0x411639
mov al, byte [0x4fbbd5]
test al, 0xc
je 0x411639
test al, 3
jne 0x411639
test dl, 0xc
jne 0x411603
cmp cx, word [0x4fc56c]
jae 0x411639
mov eax, dword [0x4fc55c]
movzx ecx, cx
mov eax, dword [eax + ecx*4]
test byte [eax + 0xf], 0xc
je 0x411639
cmp dword [0x4fba18], 0
je 0x411615
mov byte [0x4fd2fc], 1
jmp 0x411639
movzx eax, word [0x4fa36c]
mov ecx, 2
mov dl, byte [0x4f959e]
push 0xffc3d44d
push 0
push 0
push eax
call fcn.0041c230
add esp, 0x10
mov edx, dword [esp + 0x2c]
movzx ecx, dx
lea eax, [ecx - 0x7ffa]
cmp eax, 4
ja case.default.0x41164f
jmp dword [eax*4 + 0x411b2c]
cmp byte [0x4fd2fe], 0
je 0x410e41
xor al, al
test byte [0x4fbbd5], 4
je 0x411675
mov ecx, 0xa4
jmp 0x411687
test byte [0x4fbbd5], 8
movzx ecx, al
mov eax, 0xa5
cmovne ecx, eax
cmp byte [0x4fd2fe], 0
mov dword [esp + 0x3c], ecx
je 0x41170c
mov eax, 0x7ffb
cmp dx, ax
je case.0x41164f.32765
push 0xffc3d44d
test cl, cl
movzx eax, cl
push 0
mov edx, 0x12
mov ecx, 1
push 0
cmovne edx, eax
push 0
call fcn.0041c230
add esp, 0x10
cmp byte [edi + 8], 0
je 0x4116fb
cmp bl, 0x5b
je 0x4116fb
cmp bl, 0x5c
je 0x4116fb
cmp byte [esp + 0x134], 0
jne 0x4116fb
push 0xffc3d44d
push 0
push 0
push 0
mov dl, bl
mov ecx, 1
call fcn.0041c230
add esp, 0x10
mov byte [0x4fd2fe], 0
mov edx, 0x7fff
jmp 0x4119b5
cmp bl, 0xa4
je 0x41171b
mov byte [esp + 0x23], 0
cmp bl, 0xa5
jne 0x411720
mov byte [esp + 0x23], 1
cmp bl, 0xa0
je 0x41172e
cmp bl, 0xa1
je 0x41172e
xor cl, cl
jmp 0x411730
mov cl, 1
mov byte [esp + 0x13], cl
cmp bl, 0xa2
je 0x411743
mov byte [esp + 0x12], 0
cmp bl, 0xa3
jne 0x411748
mov byte [esp + 0x12], 1
xor dl, dl
test byte [0x4fbbd5], 0x10
mov dword [esp + 0x38], edx
je 0x41175b
mov dl, 0xa0
jmp 0x41177e
test byte [0x4fbbd5], 0x20
mov eax, dword [esp + 0x134]
je 0x41176f
mov dl, 0xa1
jmp 0x411785
test al, al
jne 0x411789
test cl, cl
movzx edx, dl
movzx eax, bl
cmovne edx, eax
mov eax, dword [esp + 0x134]
mov dword [esp + 0x38], edx
xor cl, cl
test byte [0x4fbbd5], 1
mov dword [esp + 0x34], ecx
je 0x41179f
mov byte [esp + 0x34], 0xa2
jmp 0x4117c5
test byte [0x4fbbd5], 2
je 0x4117af
mov byte [esp + 0x34], 0xa3
jmp 0x4117c5
test al, al
jne 0x4117c5
cmp byte [esp + 0x12], 0
movzx ecx, cl
movzx eax, bl
cmovne ecx, eax
mov dword [esp + 0x34], ecx
mov byte [esp + 0x12], 0
test dl, dl
je 0x4117eb
push 0xffc3d44d
push 0
push 0
push 0
mov ecx, 1
call fcn.0041c230
add esp, 0x10
mov byte [esp + 0x12], 1
mov eax, dword [esp + 0x34]
test al, al
je 0x41180d
push 0xffc3d44d
push 0
push 0
push 0
mov dl, al
mov ecx, 1
call fcn.0041c230
add esp, 0x10
cmp byte [esp + 0x23], 0
je 0x411822
cmp byte [esp + 0x134], 0
jne 0x41182a
mov al, bl
jmp 0x411826
mov eax, dword [esp + 0x3c]
test al, al
jne 0x411841
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x12
xor ecx, ecx
call fcn.0041c230
add esp, 0x10
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 9
mov ecx, 2
call fcn.0041c230
add esp, 0x10
cmp byte [esp + 0x12], 0
je 0x411882
cmp byte [esp + 0x13], 0
jne 0x411882
mov dl, byte [esp + 0x38]
xor ecx, ecx
push 0xffc3d44d
push 0
push 0
push 0
call fcn.0041c230
add esp, 0x10
mov byte [0x4fd2fe], 1
mov edx, 0x7fff
jmp 0x4119b5
cmp byte [0x4fd2fe], 0
je 0x410e41
mov eax, dword [esp + 0x134]
test al, al
jne 0x4118e0
cmp bl, 0xa2
je 0x4118bf
cmp bl, 0xa3
je 0x4118bf
cmp bl, 0xa0
je 0x4118bf
cmp bl, 0xa1
jne 0x4118e0
push 0xffc3d44d
push 0
push 0
push 0
mov dl, bl
mov ecx, 1
call fcn.0041c230
mov eax, dword [esp + 0x144]
add esp, 0x10
test byte [0x4fbbd5], 0xc
je 0x4118f7
test al, al
je 0x41190e
cmp bl, 0xa4
je 0x4118f7
cmp bl, 0xa5
jne 0x41190e
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x12
xor ecx, ecx
call fcn.0041c230
add esp, 0x10
mov eax, dword [esp + 0x2c]
mov ecx, 0x7ffd
cmp ax, cx
jne 0x411971
test byte [0x4fbbd5], 0x30
jne 0x411971
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x10
xor ecx, ecx
call fcn.0041c230
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 9
mov ecx, 2
call fcn.0041c230
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x10
mov ecx, 1
call fcn.0041c230
add esp, 0x30
mov edx, 0x7fff
jmp 0x4119b5
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 9
mov ecx, 2
call fcn.0041c230
add esp, 0x10
mov edx, 0x7fff
jmp 0x4119b5
mov edx, ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x48], edx
mov eax, dword [ecx + 4]
test eax, eax
je 0x4119b5
cmp byte [eax], 5
jb 0x4119b5
movzx eax, word [ecx + 0x14]
shl eax, 0x10
or edx, eax
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0x40]
mov ecx, 0x68
mov word [eax], cx
mov ecx, dword [esp + 0x134]
test cl, cl
je 0x411a71
cmp byte [esp + 0x1b], 0
je 0x411a2e
cmp byte [edi + 9], 0
je 0x411a2e
mov esi, dword [esp + 0x24]
mov dl, bl
push 0xffc3d44e
push 0
push 0
push esi
mov ecx, 1
call fcn.0041c230
push 0xffc3d44d
push 0
push 0
push esi
mov dl, bl
mov ecx, 2
call fcn.0041c230
mov eax, dword [esp + 0x68]
add esp, 0x20
mov edx, dword [esp + 0x14]
push 0
push closesocket
push eax
push edx
push ebp
push dword [esp + 0x148]
jmp 0x411ae3
cmp byte [edi + 8], 0
je 0x411a47
cmp byte [edi + 0x11], 0
je 0x411a92
push 0
push closesocket
push edx
jmp 0x411adc
cmp byte [esp + 0x11], 0
je 0x411ad0
mov eax, dword [esp + 0x1c]
push edx
mov edx, dword [esp + 0x18]
push edx
push ebp
push ecx
push dword [esp + 0x34]
mov ecx, eax
push ebx
push dword [esp + 0x140]
jmp 0x4102ad
mov eax, dword [0x4fc53c]
mov byte [edi + 0x10], 1
test eax, eax
je 0x411a88
cmp byte [eax + 8], 0
je 0x411a88
mov byte [eax + 0x12], 2
cmp byte [esp + 0x11], 0
je 0x411a9f
or byte [esi], 8
push edx
mov edx, dword [esp + 0x18]
push edx
push ebp
push ecx
jmp 0x41053e
cmp bl, 0xa4
je 0x411aa9
cmp bl, 0xa5
jne 0x411acc
push 0xffc3d450
push 0
push 0
push dword [esp + 0x30]
mov dl, bl
mov ecx, 1
call fcn.0041c230
mov ecx, dword [esp + 0x144]
add esp, 0x10
mov byte [edi + 0x11], 1
mov eax, dword [esp + 0x48]
push 0
push closesocket
push eax
mov edx, dword [esp + 0x20]
push edx
push ebp
push ecx
push ecx
push ebx
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x148]
call fcn.00411b40
add esp, 0x20
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x110
ret