Function at 0x10027ad0
Capabilities:
Act as tcp client
Connect socket
Connect tcp socket
Connect udp socket
Create tcp socket
Create udp socket
Set socket configuration

Disassembly:
sub esp, 0x42c
xor eax, eax
push ebx
push ebp
mov dword [esp + 0xd], eax
push esi
push edi
mov dword [esp + 0x19], eax
mov ecx, 0xff
lea edi, [esp + 0x3d]
mov byte [esp + 0x1d], al
mov byte [esp + 0x3c], al
mov byte [esp + 0x14], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor edi, edi
push edi
push 1
push 2
call sub.WSOCK32.dll_socket
mov esi, eax
cmp esi, 0xffffffff
mov dword [esp + 0x20], esi
jne 0x10027b26
pop edi
pop esi
pop ebp
mov eax, 0xfffffc7c
pop ebx
add esp, 0x42c
ret
mov edx, dword [esp + 0x444]
xor ecx, ecx
mov dword [esp + 0x2c], ecx
push edx
mov dword [esp + 0x34], ecx
mov word [esp + 0x30], 2
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], ecx
call sub.WSOCK32.dll_inet_addr
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x448]
push eax
call sub.WSOCK32.dll_htons
lea ecx, [esp + 0x2c]
push 0x10
push ecx
push esi
mov word [esp + 0x3a], ax
call sub.WSOCK32.dll_connect
mov ebx, dword [esp + 0x440]
test eax, eax
je 0x10027ceb
mov edx, dword [esp + 0x20]
push edx
call sub.WSOCK32.dll_closesocket
cmp ebx, 2
je 0x10028a09
mov esi, dword [sym.imp.USER32.dll_FindWindowA]
push str.ClientSM
push str.ClientSM
call esi
test eax, eax
mov dword [0x100531cc], eax
jne 0x10027c6f
call fcn.10029970
cmp eax, 0xffffffff
jne 0x10027bca
pop edi
pop esi
pop ebp
mov eax, 0xfffffc79
pop ebx
add esp, 0x42c
ret
push str.ClientSM
push str.ClientSM
call esi
push 0
push 1
push 2
mov dword [0x100531cc], eax
call sub.WSOCK32.dll_socket
cmp eax, 0xffffffff
mov dword [esp + 0x20], eax
je 0x10027c46
mov ebp, dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0x2c]
push 0x10
push eax
push ecx
call sub.WSOCK32.dll_connect
test eax, eax
je 0x10027c56
mov edx, dword [esp + 0x20]
push edx
call sub.WSOCK32.dll_closesocket
push 0x1f4
inc edi
call ebp
cmp edi, 0x78
jge 0x10027c59
push str.ClientSM
push str.ClientSM
call esi
push 0
push 1
push 2
mov dword [0x100531cc], eax
call sub.WSOCK32.dll_socket
cmp eax, 0xffffffff
mov dword [esp + 0x20], eax
jne 0x10027bf5
pop edi
pop esi
pop ebp
mov eax, 0xfffffc7c
pop ebx
add esp, 0x42c
ret
cmp edi, 0x78
jne 0x10027ceb
pop edi
pop esi
pop ebp
mov eax, 0xfffffc78
pop ebx
add esp, 0x42c
ret
xor esi, esi
push esi
push 1
push 2
call sub.WSOCK32.dll_socket
mov ebp, eax
cmp ebp, 0xffffffff
mov dword [esp + 0x20], ebp
je 0x10027cc6
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
lea eax, [esp + 0x2c]
push 0x10
push eax
push ebp
call sub.WSOCK32.dll_connect
test eax, eax
je 0x10027cd6
push ebp
call sub.WSOCK32.dll_closesocket
push 0x1f4
inc esi
call edi
cmp esi, 0x78
jge 0x10027cd9
push 0
push 1
push 2
call sub.WSOCK32.dll_socket
mov ebp, eax
cmp ebp, 0xffffffff
mov dword [esp + 0x20], ebp
jne 0x10027c8c
pop edi
pop esi
pop ebp
mov eax, 0xfffffc7c
pop ebx
add esp, 0x42c
ret
cmp esi, 0x78
jne 0x10027ceb
pop edi
pop esi
pop ebp
mov eax, 0xfffffc78
pop ebx
add esp, 0x42c
ret
mov esi, dword [esp + 0x44c]
or ecx, 0xffffffff
mov edi, esi
xor eax, eax
repne scasb al, byte es:[edi]
mov ebp, dword [esp + 0x20]
not ecx
dec ecx
push ecx
push esi
push ebp
call fcn.10028cb0
lea ecx, [esp + 0x48]
push 0x400
push ecx
push ebp
call fcn.10028c30
add esp, 0x18
cmp eax, 2
jge 0x10027d38
push ebp
call sub.WSOCK32.dll_closesocket
pop edi
pop esi
pop ebp
mov eax, 0xfffffc77
pop ebx
add esp, 0x42c
ret
push 2
lea edx, [esp + 0x40]
push 0x1004ea30
push edx
call fcn.10030750
add esp, 0xc
test eax, eax
je 0x10027ddd
lea eax, [esp + 0x3c]
push 0x400
push eax
push ebp
call fcn.10028c30
add esp, 0xc
lea ecx, [esp + 0x3c]
push ecx
call fcn.10027970
lea edi, [esp + 0x3c]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea eax, [esp + 0x3c]
mov edx, ecx
mov esi, edi
mov edi, dword [esp + 0x450]
push eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.1002f356
mov ecx, dword [0x1004ea2c]
mov esi, eax
mov dword [esp + 0x18], ecx
lea edi, [esp + 0x18]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edx, [esp + 0x18]
push ecx
push edx
push ebp
call fcn.10028cb0
add esp, 0x10
push ebp
call sub.WSOCK32.dll_closesocket
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x42c
ret
test ebx, ebx
jne 0x10028aba
mov eax, dword [0x100535d8]
mov dword [esp + 0x24], ebx
test eax, eax
je 0x10027e08
push 6
push str.SEARCH
push esi
call fcn.10030750
add esp, 0xc
test eax, eax
jne 0x10027e24
jmp 0x10027e1c
push 0xa
push str.SEARCH_ENC
push esi
call fcn.10030750
add esp, 0xc
test eax, eax
jne 0x10027e24
mov dword [esp + 0x24], 1
mov ebp, dword [esp + 0x450]
mov ebx, dword [esp + 0x20]
lea eax, [esp + 0x3c]
push 0x400
push eax
push ebx
call fcn.10028c30
add esp, 0xc
test eax, eax
jle 0x10028a68
lea ecx, [esp + 0x10]
lea edx, [esp + 0x28]
push ecx
lea eax, [esp + 0x40]
push edx
push eax
call fcn.10028c00
mov ecx, dword [esp + 0x1c]
add esp, 0xc
push ecx
call fcn.10027970
mov edi, dword [esp + 0x28]
mov esi, str.BLOCK_ALGORITHM
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x10027e9a
test cl, cl
je 0x10027e96
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x10027e9a
add eax, 2
add esi, 2
test cl, cl
jne 0x10027e76
xor eax, eax
jmp 0x10027e9f
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x10027eb8
mov eax, dword [esp + 0x10]
push eax
call fcn.1002f356
add esp, 4
mov byte [ebp + 0x58], al
jmp 0x10027e2f
mov esi, str.HASH_ALGORITHM
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x10027ee3
test cl, cl
je 0x10027edf
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x10027ee3
add eax, 2
add esi, 2
test cl, cl
jne 0x10027ebf
xor eax, eax
jmp 0x10027ee8
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x10027f01
mov eax, dword [esp + 0x10]
push eax
call fcn.1002f356
add esp, 4
mov byte [ebp + 0x59], al
jmp 0x10027e2f
mov esi, str.LOCATION
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x10027f2c
test cl, cl
je 0x10027f28
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x10027f2c
add eax, 2
add esi, 2
test cl, cl
jne 0x10027f08
xor eax, eax
jmp 0x10027f31
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x100288c5
mov esi, str.MAC_KEY
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x10027f64
test cl, cl
je 0x10027f60
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x10027f64
add eax, 2
add esi, 2
test cl, cl
jne 0x10027f40
xor eax, eax
jmp 0x10027f69
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x10028096
mov eax, dword [esp + 0x24]
test eax, eax
mov eax, dword [0x100535d8]
je 0x10028006
test eax, eax
je 0x10027fbd
call fcn.10029c00
test eax, eax
push 0x28
je 0x10027fa7
mov eax, dword [esp + 0x14]
lea ecx, [ebp + 0x5b]
push eax
push ecx
call fcn.1002a980
add esp, 0xc
jmp 0x10027e2f
mov edx, dword [esp + 0x14]
lea eax, [ebp + 0x5b]
push edx
push eax
call fcn.1002a200
add esp, 0xc
jmp 0x10027e2f
call fcn.10029c00
mov edx, dword [esp + 0x10]
test eax, eax
mov edi, edx
je 0x10027fe9
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [ebp + 0x5b]
push edx
push ecx
call fcn.1002a9b0
add esp, 0xc
jmp 0x10027e2f
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea edx, [ebp + 0x5b]
push edx
call fcn.1002a1d0
add esp, 0xc
jmp 0x10027e2f
test eax, eax
je 0x10028047
call fcn.10029c00
test eax, eax
push 0x28
je 0x1002802e
mov eax, dword [esp + 0x14]
lea ecx, [ebp + 0x84]
push eax
push ecx
call fcn.1002a980
add esp, 0xc
jmp 0x10027e2f
mov edx, dword [esp + 0x14]
lea eax, [ebp + 0x84]
push edx
push eax
call fcn.1002a200
add esp, 0xc
jmp 0x10027e2f
call fcn.10029c00
mov edx, dword [esp + 0x10]
test eax, eax
mov edi, edx
je 0x10028076
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [ebp + 0x84]
push edx
push ecx
call fcn.1002a9b0
add esp, 0xc
jmp 0x10027e2f
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea edx, [ebp + 0x84]
push edx
call fcn.1002a1d0
add esp, 0xc
jmp 0x10027e2f
mov esi, 0x1004e9e0
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x100280c1
test cl, cl
je 0x100280bd
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x100280c1
add eax, 2
add esi, 2
test cl, cl
jne 0x1002809d
xor eax, eax
jmp 0x100280c6
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x100281ff
mov eax, dword [esp + 0x24]
test eax, eax
mov eax, dword [0x100535d8]
je 0x1002816f
test eax, eax
je 0x10028120
call fcn.10029c00
test eax, eax
push 0x28
je 0x10028107
mov eax, dword [esp + 0x14]
lea ecx, [ebp + 0xad]
push eax
push ecx
call fcn.1002a980
add esp, 0xc
jmp 0x10027e2f
mov edx, dword [esp + 0x14]
lea eax, [ebp + 0xad]
push edx
push eax
call fcn.1002a200
add esp, 0xc
jmp 0x10027e2f
call fcn.10029c00
mov edx, dword [esp + 0x10]
test eax, eax
mov edi, edx
je 0x1002814f
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [ebp + 0xad]
push edx
push ecx
call fcn.1002a9b0
add esp, 0xc
jmp 0x10027e2f
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea edx, [ebp + 0xad]
push edx
call fcn.1002a1d0
add esp, 0xc
jmp 0x10027e2f
test eax, eax
je 0x100281b0
call fcn.10029c00
test eax, eax
push 0x28
je 0x10028197
mov eax, dword [esp + 0x14]
lea ecx, [ebp + 0xfe]
push eax
push ecx
call fcn.1002a980
add esp, 0xc
jmp 0x10027e2f
mov edx, dword [esp + 0x14]
lea eax, [ebp + 0xfe]
push edx
push eax
call fcn.1002a200
add esp, 0xc
jmp 0x10027e2f
call fcn.10029c00
mov edx, dword [esp + 0x10]
test eax, eax
mov edi, edx
je 0x100281df
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [ebp + 0xfe]
push edx
push ecx
call fcn.1002a9b0
add esp, 0xc
jmp 0x10027e2f
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea edx, [ebp + 0xfe]
push edx
call fcn.1002a1d0
add esp, 0xc
jmp 0x10027e2f
mov esi, str.INIT_VECTOR
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x1002822a
test cl, cl
je 0x10028226
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x1002822a
add eax, 2
add esi, 2
test cl, cl
jne 0x10028206
xor eax, eax
jmp 0x1002822f
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x100282cd
mov eax, dword [esp + 0x24]
test eax, eax
mov eax, dword [0x100535d8]
je 0x100282a3
test eax, eax
je 0x10028270
call fcn.10029c00
test eax, eax
push 0x28
jne 0x10028641
mov edx, dword [esp + 0x14]
lea eax, [ebp + 0x14f]
push edx
push eax
call fcn.1002a200
add esp, 0xc
jmp 0x10027e2f
call fcn.10029c00
mov edx, dword [esp + 0x10]
test eax, eax
mov edi, edx
jne 0x10028682
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea edx, [ebp + 0x14f]
push edx
call fcn.1002a1d0
add esp, 0xc
jmp 0x10027e2f
test eax, eax
je 0x100282bb
call fcn.10029c00
test eax, eax
push 0x28
je 0x10028727
jmp 0x1002870e
call fcn.10029c00
test eax, eax
je 0x1002876f
jmp 0x10028749
mov esi, str.SERVER_MAC_KEY
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x100282f8
test cl, cl
je 0x100282f4
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x100282f8
add eax, 2
add esi, 2
test cl, cl
jne 0x100282d4
xor eax, eax
jmp 0x100282fd
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x1002838e
mov eax, dword [0x100535d8]
test eax, eax
je 0x10028345
call fcn.10029c00
test eax, eax
push 0x28
je 0x1002832f
mov eax, dword [esp + 0x14]
lea ecx, [ebp + 0x5b]
push eax
push ecx
call fcn.1002a980
add esp, 0xc
jmp 0x10027e2f
mov edx, dword [esp + 0x14]
lea eax, [ebp + 0x5b]
push edx
push eax
call fcn.1002a200
add esp, 0xc
jmp 0x10027e2f
call fcn.10029c00
mov edx, dword [esp + 0x10]
test eax, eax
mov edi, edx
je 0x10028371
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [ebp + 0x5b]
push edx
push ecx
call fcn.1002a9b0
add esp, 0xc
jmp 0x10027e2f
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea edx, [ebp + 0x5b]
push edx
call fcn.1002a1d0
add esp, 0xc
jmp 0x10027e2f
mov esi, str.CLIENT_MAC_KEY
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x100283b9
test cl, cl
je 0x100283b5
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x100283b9
add eax, 2
add esi, 2
test cl, cl
jne 0x10028395
xor eax, eax
jmp 0x100283be
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x1002845b
mov eax, dword [0x100535d8]
test eax, eax
je 0x1002840c
call fcn.10029c00
test eax, eax
push 0x28
je 0x100283f3
mov eax, dword [esp + 0x14]
lea ecx, [ebp + 0x84]
push eax
push ecx
call fcn.1002a980
add esp, 0xc
jmp 0x10027e2f
mov edx, dword [esp + 0x14]
lea eax, [ebp + 0x84]
push edx
push eax
call fcn.1002a200
add esp, 0xc
jmp 0x10027e2f
call fcn.10029c00
mov edx, dword [esp + 0x10]
test eax, eax
mov edi, edx
je 0x1002843b
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [ebp + 0x84]
push edx
push ecx
call fcn.1002a9b0
add esp, 0xc
jmp 0x10027e2f
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea edx, [ebp + 0x84]
push edx
call fcn.1002a1d0
add esp, 0xc
jmp 0x10027e2f
mov esi, str.SERVER_KEY
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x10028486
test cl, cl
je 0x10028482
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x10028486
add eax, 2
add esi, 2
test cl, cl
jne 0x10028462
xor eax, eax
jmp 0x1002848b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x10028528
mov eax, dword [0x100535d8]
test eax, eax
je 0x100284d9
call fcn.10029c00
test eax, eax
push 0x28
je 0x100284c0
mov eax, dword [esp + 0x14]
lea ecx, [ebp + 0xad]
push eax
push ecx
call fcn.1002a980
add esp, 0xc
jmp 0x10027e2f
mov edx, dword [esp + 0x14]
lea eax, [ebp + 0xad]
push edx
push eax
call fcn.1002a200
add esp, 0xc
jmp 0x10027e2f
call fcn.10029c00
mov edx, dword [esp + 0x10]
test eax, eax
mov edi, edx
je 0x10028508
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [ebp + 0xad]
push edx
push ecx
call fcn.1002a9b0
add esp, 0xc
jmp 0x10027e2f
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea edx, [ebp + 0xad]
push edx
call fcn.1002a1d0
add esp, 0xc
jmp 0x10027e2f
mov esi, str.CLIENT_KEY
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x10028553
test cl, cl
je 0x1002854f
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x10028553
add eax, 2
add esi, 2
test cl, cl
jne 0x1002852f
xor eax, eax
jmp 0x10028558
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x100285f5
mov eax, dword [0x100535d8]
test eax, eax
je 0x100285a6
call fcn.10029c00
test eax, eax
push 0x28
je 0x1002858d
mov eax, dword [esp + 0x14]
lea ecx, [ebp + 0xfe]
push eax
push ecx
call fcn.1002a980
add esp, 0xc
jmp 0x10027e2f
mov edx, dword [esp + 0x14]
lea eax, [ebp + 0xfe]
push edx
push eax
call fcn.1002a200
add esp, 0xc
jmp 0x10027e2f
call fcn.10029c00
mov edx, dword [esp + 0x10]
test eax, eax
mov edi, edx
je 0x100285d5
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [ebp + 0xfe]
push edx
push ecx
call fcn.1002a9b0
add esp, 0xc
jmp 0x10027e2f
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea edx, [ebp + 0xfe]
push edx
call fcn.1002a1d0
add esp, 0xc
jmp 0x10027e2f
mov esi, str.SERVER_INIT_VECTOR
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x10028620
test cl, cl
je 0x1002861c
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x10028620
add eax, 2
add esi, 2
test cl, cl
jne 0x100285fc
xor eax, eax
jmp 0x10028625
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x100286c2
mov eax, dword [0x100535d8]
test eax, eax
je 0x10028673
call fcn.10029c00
test eax, eax
push 0x28
je 0x1002865a
mov eax, dword [esp + 0x14]
lea ecx, [ebp + 0x14f]
push eax
push ecx
call fcn.1002a980
add esp, 0xc
jmp 0x10027e2f
mov edx, dword [esp + 0x14]
lea eax, [ebp + 0x14f]
push edx
push eax
call fcn.1002a200
add esp, 0xc
jmp 0x10027e2f
call fcn.10029c00
mov edx, dword [esp + 0x10]
test eax, eax
mov edi, edx
je 0x100286a2
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [ebp + 0x14f]
push edx
push ecx
call fcn.1002a9b0
add esp, 0xc
jmp 0x10027e2f
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea edx, [ebp + 0x14f]
push edx
call fcn.1002a1d0
add esp, 0xc
jmp 0x10027e2f
mov esi, str.CLIENT_INIT_VECTOR
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x100286ed
test cl, cl
je 0x100286e9
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x100286ed
add eax, 2
add esi, 2
test cl, cl
jne 0x100286c9
xor eax, eax
jmp 0x100286f2
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x10028795
mov eax, dword [0x100535d8]
test eax, eax
je 0x10028740
call fcn.10029c00
test eax, eax
push 0x28
je 0x10028727
mov eax, dword [esp + 0x14]
lea ecx, [ebp + 0x178]
push eax
push ecx
call fcn.1002a980
add esp, 0xc
jmp 0x10027e2f
mov edx, dword [esp + 0x14]
lea eax, [ebp + 0x178]
push edx
push eax
call fcn.1002a200
add esp, 0xc
jmp 0x10027e2f
call fcn.10029c00
test eax, eax
je 0x1002876f
mov edx, dword [esp + 0x10]
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [ebp + 0x178]
push edx
push ecx
call fcn.1002a9b0
add esp, 0xc
jmp 0x10027e2f
mov edx, dword [esp + 0x10]
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea edx, [ebp + 0x178]
push edx
call fcn.1002a1d0
add esp, 0xc
jmp 0x10027e2f
mov esi, 0x1004e970
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x100287c0
test cl, cl
je 0x100287bc
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x100287c0
add eax, 2
add esi, 2
test cl, cl
jne 0x1002879c
xor eax, eax
jmp 0x100287c5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x100287ed
mov eax, dword [esp + 0x10]
push 0x40
push eax
push ebp
call fcn.1002bce0
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [ebp + 0x50], ecx
jmp 0x10027e2f
mov esi, str.SUBJECT
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x10028818
test cl, cl
je 0x10028814
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x10028818
add eax, 2
add esi, 2
test cl, cl
jne 0x100287f4
xor eax, eax
jmp 0x1002881d
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x1002883f
mov eax, dword [esp + 0x10]
push 0x1fe
lea ecx, [ebp + 0x1ac]
push eax
push ecx
call fcn.1002bce0
add esp, 0xc
jmp 0x10027e2f
mov esi, str.ISSUER
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x1002886a
test cl, cl
je 0x10028866
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x1002886a
add eax, 2
add esi, 2
test cl, cl
jne 0x10028846
xor eax, eax
jmp 0x1002886f
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x10028891
mov eax, dword [esp + 0x10]
push 0x1fe
lea ecx, [ebp + 0x3ac]
push eax
push ecx
call fcn.1002bce0
add esp, 0xc
jmp 0x10027e2f
mov esi, str.LOCATION
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x100288bc
test cl, cl
je 0x100288b8
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x100288bc
add eax, 2
add esi, 2
test cl, cl
jne 0x10028898
xor eax, eax
jmp 0x100288c1
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x100288dd
mov eax, dword [esp + 0x10]
push eax
call fcn.1002f356
add esp, 4
mov dword [ebp + 0x1a8], eax
jmp 0x10027e2f
mov esi, str.OFNPATH
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x10028908
test cl, cl
je 0x10028904
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x10028908
add eax, 2
add esi, 2
test cl, cl
jne 0x100288e4
xor eax, eax
jmp 0x1002890d
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x1002892f
mov eax, dword [esp + 0x10]
push 0x1fe
lea ecx, [ebp + 0x5ac]
push eax
push ecx
call fcn.1002bce0
add esp, 0xc
jmp 0x10027e2f
mov esi, str.ENCPWD
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x1002895a
test cl, cl
je 0x10028956
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x1002895a
add eax, 2
add esi, 2
test cl, cl
jne 0x10028936
xor eax, eax
jmp 0x1002895f
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x10028981
mov eax, dword [esp + 0x10]
push 0x400
lea ecx, [ebp + 0x7ac]
push eax
push ecx
call fcn.1002bce0
add esp, 0xc
jmp 0x10027e2f
mov esi, str.ENCICCARDPWD
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x100289ac
test cl, cl
je 0x100289a8
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x100289ac
add eax, 2
add esi, 2
test cl, cl
jne 0x10028988
xor eax, eax
jmp 0x100289b1
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x10028a16
mov eax, dword [esp + 0x10]
push 0x400
add ebp, 0xbac
push eax
push ebp
call fcn.1002bce0
mov ebp, dword [esp + 0x2c]
add esp, 0xc
mov ecx, dword [0x1004ea2c]
lea edi, [esp + 0x14]
mov dword [esp + 0x14], ecx
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x14]
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
push ebp
call fcn.10028cb0
add esp, 0xc
push ebp
call sub.WSOCK32.dll_closesocket
mov dword [0x100531c8], 2
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x42c
ret
mov ecx, dword [str.ERROR_n]
mov al, byte [0x1004e93e]
mov dx, word [0x1004e93c]
mov dword [esp + 0x14], ecx
mov byte [esp + 0x1a], al
lea edi, [esp + 0x14]
or ecx, 0xffffffff
xor eax, eax
mov word [esp + 0x18], dx
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [esp + 0x18]
push ecx
push ebx
call fcn.10028cb0
add esp, 0xc
push ebx
call sub.WSOCK32.dll_closesocket
pop edi
pop esi
pop ebp
mov eax, 0xfffffc76
pop ebx
add esp, 0x42c
ret
mov ax, word [0x1004e93c]
mov cl, byte [0x1004e93e]
mov edx, dword [str.ERROR_n]
mov word [esp + 0x18], ax
mov byte [esp + 0x1a], cl
lea edi, [esp + 0x14]
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x14], edx
lea edx, [esp + 0x14]
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
push ebx
call fcn.10028cb0
add esp, 0xc
push ebx
call sub.WSOCK32.dll_closesocket
pop edi
pop esi
pop ebp
mov eax, 0xfffffc77
pop ebx
add esp, 0x42c
ret
cmp ebx, 4
jne 0x100289d2
lea eax, [esp + 0x3c]
push 0x400
push eax
push ebp
call fcn.10028c30
add esp, 0xc
test eax, eax
jle 0x10028ba7
lea ecx, [esp + 0x10]
lea edx, [esp + 0x28]
push ecx
lea eax, [esp + 0x40]
push edx
push eax
call fcn.10028c00
mov ecx, dword [esp + 0x1c]
add esp, 0xc
push ecx
call fcn.10027970
mov eax, dword [esp + 0x28]
mov esi, str.RANDOM
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x10028b30
test cl, cl
je 0x10028b2c
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x10028b30
add eax, 2
add esi, 2
test cl, cl
jne 0x10028b08
xor eax, eax
jmp 0x10028b35
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x10028b55
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x450]
push 0x46
push eax
push ecx
call fcn.1002bce0
add esp, 0xc
jmp 0x100289d2
mov ax, word [0x1004e93c]
mov cl, byte [0x1004e93e]
mov edx, dword [str.ERROR_n]
mov word [esp + 0x18], ax
mov byte [esp + 0x1a], cl
lea edi, [esp + 0x14]
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x14], edx
lea edx, [esp + 0x14]
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
push ebp
call fcn.10028cb0
add esp, 0xc
push ebp
call sub.WSOCK32.dll_closesocket
pop edi
pop esi
pop ebp
mov eax, 0xfffffc76
pop ebx
add esp, 0x42c
ret
mov eax, dword [str.ERROR_n]
mov cx, word [0x1004e93c]
mov dl, byte [0x1004e93e]
mov dword [esp + 0x14], eax
mov word [esp + 0x18], cx
lea edi, [esp + 0x14]
or ecx, 0xffffffff
xor eax, eax
mov byte [esp + 0x1a], dl
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x14]
push ecx
push eax
push ebp
call fcn.10028cb0
add esp, 0xc
push ebp
call sub.WSOCK32.dll_closesocket
pop edi
pop esi
pop ebp
mov eax, 0xfffffc77
pop ebx
add esp, 0x42c
ret