Function at 0x10168d30
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
sub esp, 0xbc4
mov eax, dword [0x10a78b80]
xor eax, esp
mov dword [esp + 0xbc0], eax
push ebx
push esi
push edi
mov eax, dword [esp + 0xbd8]
mov edx, dword [esp + 0xbd4]
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xbe0]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0xbe4]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xbe8]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0xbec]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0xbf0]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xc00]
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0xc04]
mov ecx, dword [esp + 0xbdc]
mov dword [esp + 0xe8], eax
mov eax, dword [esp + 0xc0c]
mov dword [esp + 0xe4], eax
mov eax, dword [esp + 0xc10]
mov dword [esp + 0xf0], eax
mov eax, dword [esp + 0xc14]
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0xc1c]
mov dword [esp + 0xf4], eax
lea eax, [edx + 0x3abf0]
mov dword [esp + 0x84], eax
mov eax, dword [eax + 0x3bb8]
xor ebx, ebx
mov dword [esp + 0x28], edx
cmp byte [eax + 0x4d], bl
mov eax, dword [ecx + 0x10b0]
mov esi, dword [esp + 0xbfc]
sete bl
cmp dword [edx + 0x5cf04], 0
mov edi, dword [eax]
lea eax, [ecx + 0x2c70]
lea ebx, [ebx*2 + 1]
mov dword [esp + 0xd0], eax
mov dword [esp + 0x88], ebx
lea ebx, [ecx + 0xe0]
mov dword [esp + 0x10], ecx
mov al, byte [edi + 0x15]
mov byte [esp + 0x17], al
mov al, byte [edi + 5]
mov dword [esp + 0x48], ebx
mov dword [esp + 0x1c], edi
mov byte [esp + 0x40], al
je 0x10168e88
mov ecx, dword [edx]
movzx eax, byte [edx + 0x6d660]
add ecx, 0xcb50
push eax
push ecx
call fcn.1015cfb0
add esp, 8
mov dword [esp + 0x90], 1
test eax, eax
jne 0x10168e93
mov dword [esp + 0x90], 0
movsx eax, byte [edi + 0x14]
xor edx, edx
mov dword [esp + 0x60], eax
mov al, byte [edi + 0x15]
test al, al
movsx ecx, al
mov eax, dword [ebx + 0x1c]
mov dword [esp + 0x328], eax
cmovns edx, ecx
mov eax, dword [ebx + 0x554]
mov dword [esp + 0x32c], eax
mov eax, dword [ebx + 0xa8c]
mov dword [esp + 0x330], eax
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0x334], eax
mov eax, dword [ebx + 0x564]
mov dword [esp + 0x338], eax
mov eax, dword [ebx + 0xa9c]
mov dword [esp + 0x33c], eax
lea eax, [esi + 0x4000]
mov dword [esp + 0x344], eax
lea eax, [esi + 0x8000]
mov dword [esp + 0x64], 0
mov dword [esp + 0xa8], 0xffffffff
mov dword [esp + 0xac], htons
mov dword [esp + 0x340], esi
mov dword [esp + 0x348], eax
mov dword [esp + 0x34c], 0x80
mov dword [esp + 0x350], 0x80
mov dword [esp + 0x354], 0x80
mov bl, byte [edi + 0x15]
mov dword [esp + 0x80], edx
mov dl, byte [edi + 0x14]
test bl, bl
jle 0x10168faa
cmp dl, 5
jge 0x10168f6b
cmp bl, 5
jge 0x10168f89
xor al, al
nop dword [eax]
movsx ecx, al
cmp dl, byte [ecx + 0x108079f8]
jne 0x10168f83
cmp bl, byte [ecx + 0x10807a04]
je 0x10168f9b
inc al
cmp al, 9
jl 0x10168f70
mov al, bl
shl al, 2
sub al, 0xd
add al, dl
mov byte [esp + 0x8c], al
jmp 0x10168fb1
test al, al
js 0x10168f89
add al, 0x14
mov byte [esp + 0x8c], al
jmp 0x10168fb1
mov byte [esp + 0x8c], dl
or eax, 0xffffffff
mov dword [esp + 0x9c], 0xffffffff
mov dword [esp + 0xb8], eax
mov esi, edi
mov eax, closesocket
mov dword [esp + 0xa0], htons
mov dword [esp + 0xbc], eax
lea edi, [esp + 0x284]
xor eax, eax
mov ecx, 0x29
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 0xc0], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
cmp dword [esp + 0x90], eax
je 0x101691f3
mov eax, dword [esp + 0x84]
mov ecx, dword [eax + 0x1e8]
mov eax, dword [esp + 0x48]
cmp byte [eax + 0xfd4], 0
jne 0x10169032
mov dword [esp + 0x78], 1
jmp 0x101690ee
mov ebx, dword [eax + 0xfd0]
mov edx, ebx
mov edi, dword [eax + 4]
mov eax, dword [eax + 8]
add eax, edi
mov dword [esp + 0x54], ebx
shl eax, 2
sub edx, eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x58], edx
movzx eax, byte [eax + 0x1154]
add eax, edi
cmp eax, ecx
cmovge eax, ecx
mov dword [esp + 0x5c], eax
cmp edi, eax
jge 0x101690e2
nop dword [eax]
mov edx, dword [edx + edi*4]
mov eax, dword [edx]
mov al, byte [eax + 0x1080822c]
mov byte [esp + 0xf], al
movzx eax, byte [edx + 0x9f]
test al, al
js 0x10169090
cmp byte [edx + 0x14], 0
jle 0x101690d1
mov ecx, dword [ebx]
xor esi, esi
mov bl, byte [edx + 0x14]
mov bh, byte [edx + 0x15]
xor edx, edx
movzx eax, byte [ecx + 0x14]
mov byte [esp + 0x24], al
mov al, byte [ecx + 0x15]
test al, al
mov byte [esp + 0x25], al
setg dl
inc edx
xor eax, eax
mov cl, byte [esp + eax + 0x24]
cmp cl, bl
je 0x101690bf
cmp cl, bh
jne 0x101690c4
mov esi, 1
inc eax
cmp eax, edx
jl 0x101690b3
test esi, esi
jne 0x10169111
mov ebx, dword [esp + 0x54]
movzx eax, byte [esp + 0xf]
mov edx, dword [esp + 0x58]
add edi, eax
cmp edi, dword [esp + 0x5c]
jl 0x10169070
mov dword [esp + 0x78], 0
mov eax, dword [esp + 0x48]
cmp byte [eax + 0xfd5], 0
mov ecx, dword [esp + 0x84]
mov ecx, dword [ecx + 0x1e4]
jne 0x1016911b
mov dword [esp + 0x7c], 1
jmp 0x101691f3
mov dword [esp + 0x78], 1
jmp 0x101690ea
mov esi, dword [eax + 0xfd0]
mov edx, esi
mov edi, dword [eax]
mov ebx, dword [eax + 8]
mov eax, edi
imul eax, ebx
mov dword [esp + 0x5c], esi
mov dword [esp + 0x54], ebx
shl eax, 2
sub edx, eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x50], edx
movzx eax, byte [eax + 0x1155]
add eax, edi
cmp eax, ecx
cmovge eax, ecx
mov dword [esp + 0x58], eax
cmp edi, eax
jge 0x101691eb
nop dword [eax]
mov eax, edi
imul eax, ebx
mov edx, dword [edx + eax*4 - 4]
mov eax, dword [edx]
mov al, byte [eax + 0x10808244]
mov byte [esp + 0xf], al
movzx eax, byte [edx + 0x9f]
test al, al
js 0x10169186
cmp byte [edx + 0x14], 0
jle 0x101691d6
mov ecx, dword [esi]
xor esi, esi
mov bl, byte [edx + 0x14]
mov bh, byte [edx + 0x15]
xor edx, edx
movzx eax, byte [ecx + 0x14]
mov byte [esp + 0x24], al
mov al, byte [ecx + 0x15]
test al, al
mov byte [esp + 0x25], al
setg dl
inc edx
xor eax, eax
nop dword [eax]
mov cl, byte [esp + eax + 0x24]
cmp cl, bl
je 0x101691bc
cmp cl, bh
jne 0x101691c1
mov esi, 1
inc eax
cmp eax, edx
jl 0x101691b0
test esi, esi
jne 0x10169104
mov ebx, dword [esp + 0x54]
mov esi, dword [esp + 0x5c]
movzx eax, byte [esp + 0xf]
mov edx, dword [esp + 0x50]
add edi, eax
cmp edi, dword [esp + 0x58]
jl 0x10169160
mov dword [esp + 0x7c], 0
mov edi, dword [esp + 0x1c]
push dword [esp + 0x40]
mov esi, dword [esp + 0x14]
lea eax, [edi + 0x14]
push eax
push esi
call fcn.10168b70
mov ecx, dword [esp + 0x34]
push eax
push dword [esp + 0x5c]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0xc0c]
push eax
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0xc0c]
push eax
push dword [esp + 0x4c]
mov dword [esp + 0x78], 0xffffffff
push dword [esp + 0x38]
mov dword [esp + 0x48], eax
push esi
push ecx
call fcn.1016ec30
mov bl, byte [edi + 0x15]
add esp, 0x2c
mov dl, byte [edi + 0x14]
mov dword [esp + 0xd4], eax
test bl, bl
jle 0x101692cb
cmp dl, 5
jge 0x10169263
cmp bl, 5
jge 0x1016927e
xor al, al
movsx ecx, al
cmp dl, byte [ecx + 0x108079f8]
jne 0x10169278
cmp bl, byte [ecx + 0x10807a04]
je 0x101692ba
inc al
cmp al, 9
jl 0x10169265
mov al, bl
shl al, 2
add al, dl
movsx eax, al
movzx eax, word [esi + eax*2 + 0x311e]
mov ecx, eax
sar eax, 4
and ecx, 7
and eax, 0xf
mov edx, ecx
cmp ecx, 4
jb 0x101692a7
mov edx, 4
mov ecx, eax
shr ecx, 1
lea eax, [edx + ecx*4]
add eax, ecx
movzx eax, word [eax*2 + 0x10a72444]
jmp 0x101692d6
test al, al
js 0x1016927e
movsx eax, al
movzx eax, word [esi + eax*2 + 0x3160]
jmp 0x10169290
movsx eax, dl
movzx eax, word [esi + eax*2 + 0x3138]
push eax
push dword [esp + 0x44]
add esi, 0x31e8
push esi
call fcn.10167560
mov ecx, eax
mov dword [esp + 0x38c], 0x80008000
mov eax, dword [esp + 0x3c]
xor edx, edx
add esp, 0xc
mov dword [esp + 0x384], 0x80008000
mov dword [esp + 0x388], 0x80008000
mov dword [esp + 0x38c], 0x80008000
add ecx, dword [eax + 0x44]
add ecx, dword [eax + 0x40]
mov dword [esp + 0xd8], ecx
mov dword [eax + 0x146c], 0
mov dword [esp + 0x34], edx
cmp dword [esp + 0x54], edx
jle 0x1016a54d
movq xmm0, qword [esp + 0x378]
lea eax, [esi + 0x3d28]
mov ecx, dword [esp + 0x10]
xor esi, esi
movq qword [esp + 0x104], xmm0
xor ebx, ebx
movups xmm0, xmmword [esp + 0x368]
mov dword [esp + 0xcc], eax
lea eax, [ecx + 0xe0]
mov dword [esp + 0x98], esi
movups xmmword [esp + 0x12c], xmm0
mov dword [esp + 0xec], eax
lea eax, [ecx + 0x10c]
movups xmm0, xmmword [esp + 0x358]
mov dword [esp + 0x5c], eax
mov dword [esp + 0xa4], ebx
movups xmmword [esp + 0x11c], xmm0
movq xmm0, qword [esp + 0x378]
movq qword [esp + 0x10c], xmm0
movups xmm0, xmmword [esp + 0x368]
movups xmmword [esp + 0x14c], xmm0
movups xmm0, xmmword [esp + 0x358]
movups xmmword [esp + 0x13c], xmm0
movq xmm0, qword [esp + 0x378]
movq qword [esp + 0x114], xmm0
movups xmm0, xmmword [esp + 0x368]
movups xmmword [esp + 0x16c], xmm0
movups xmm0, xmmword [esp + 0x358]
movups xmmword [esp + 0x15c], xmm0
jmp 0x1016942e
mov esi, dword [esp + 0x98]
mov ebx, dword [esp + 0xa4]
mov al, byte [edi + 0x9f]
mov cl, dl
push dword [esp + 0x8c]
shl cl, 4
push dword [esp + 0xd0]
xor cl, al
push dword [esp + 0xd8]
and cl, 0x30
xor cl, al
mov byte [edi + 0x9f], cl
push edi
mov dword [esp + esi + 0x3a4], 0x80008000
mov dword [esp + ebx + 0x3ac], htons
call fcn.101689c0
mov esi, dword [esp + 0x44]
mov ebx, eax
mov edx, dword [esp + 0xe4]
add esp, 0x10
mov dword [esp + 0x20], ebx
lea ecx, [esi + esi*4]
mov dword [esp + ecx*4 + 0x390], ebx
mov dword [esp + ecx*4 + 0x3a0], 0
mov ecx, esi
sar edx, cl
test dl, 1
je 0x10169cee
cmp dword [esp + 0x90], 0
je 0x10169604
cmp dword [esp + 0x78], 0
jne 0x10169604
cmp dword [esp + 0x7c], 0
jne 0x10169604
cmp dword [esp + 0x24], 0xffffffff
jne 0x101694e6
cmp dword [esp + 0x3c], 0x7fffffff
je 0x10169604
mov eax, dword [esp + 0x28]
mov cl, byte [esp + 0x40]
mov edx, dword [eax + 0x5cf04]
cmp cl, 0x10
je 0x10169516
cmp cl, 0x18
je 0x10169516
cmp cl, 0x13
je 0x10169516
cmp cl, 0x14
je 0x10169516
cmp cl, 0x15
je 0x10169516
cmp cl, 0x16
je 0x10169516
xor eax, eax
jmp 0x1016951b
mov eax, 1
cmp edx, 2
jge 0x10169528
test eax, eax
jne 0x10169604
mov eax, dword [esp + 0xc18]
cmp dword [eax], 0xffffffff
mov ebx, dword [eax + 4]
mov dword [esp + 0x50], ebx
jne 0x10169547
cmp ebx, 0x7fffffff
je 0x10169600
cmp cl, 0xf
je 0x10169555
cmp cl, 0x17
je 0x10169555
xor eax, eax
jmp 0x1016955a
mov eax, 1
test eax, eax
mov edx, esi
mov eax, 3
cmovne edx, eax
cmp dword [esp + 0x80], 0
jg 0x10169584
mov eax, dword [esp + 0xc18]
mov ecx, dword [esp + 0x60]
mov esi, dword [eax + ecx*8]
mov edi, dword [eax + ecx*8 + 4]
jmp 0x101695bd
mov ecx, dword [esp + 0xc18]
mov eax, dword [esp + 0x60]
mov ebx, dword [esp + 0x80]
mov edi, dword [ecx + eax*8 + 4]
mov esi, dword [ecx + eax*8]
mov eax, dword [esp + 0x80]
mov eax, dword [ecx + eax*8]
mov ecx, dword [ecx + ebx*8 + 4]
mov ebx, dword [esp + 0x50]
cmp edi, ecx
jl 0x101695b9
jg 0x101695bd
cmp esi, eax
ja 0x101695bd
mov esi, eax
mov edi, ecx
mov ecx, dword [esp + 0x28]
push ebx
mov eax, dword [ecx + 0x5cf04]
mov ecx, dword [esp + 0xc1c]
lea eax, [edx + eax*4]
mov eax, dword [eax*4 + 0x10812a60]
push dword [ecx]
cdq
push edx
push eax
call fcn.10511b50
shrd eax, edx, 2
sar edx, 2
cmp edi, edx
jg 0x10169cea
mov edi, dword [esp + 0x1c]
jl 0x10169600
cmp esi, eax
ja 0x10169cee
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 0x18]
mov dword [esi], 0
mov dword [esi + 8], 0
mov dword [esi + 0xc], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
mov dword [esi + 0x18], 0
mov dword [esi + 0x1c], 0
mov byte [esi + 0x20], 1
mov dword [esi + 4], 0
mov al, byte [edi + 0xa0]
and al, 0xfe
mov byte [edi + 0x4f], 0
or al, 2
cmp byte [edi + 0x15], 0
mov byte [edi + 0xa0], al
jne 0x10169661
mov byte [edi + 0x15], 0xff
mov eax, dword [esp + 0xd8]
add eax, ebx
mov word [edi + 0x1c], 0
cmp byte [esp + 0x17], 0
mov dword [esi], eax
mov dword [esp + 0xe0], 0
mov dword [esp + 0x50], 0
jle 0x10169690
xor eax, eax
jmp 0x1016969a
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x5cea0]
mov ebx, dword [esp + 0x10]
push eax
push ebx
push dword [esp + 0x8c]
lea eax, [esp + 0xd0]
push dword [esp + 0x4c]
push eax
call fcn.10165d40
add esp, 0x14
test eax, eax
je 0x10169cf6
mov al, byte [esp + 0x40]
cmp al, 0x10
je 0x101696e3
cmp al, 0x18
je 0x101696e3
cmp al, 0x13
je 0x101696e3
cmp al, 0x14
je 0x101696e3
cmp al, 0x15
je 0x101696e3
cmp al, 0x16
jne 0x1016988b
lea eax, [esp + 0x390]
push eax
push dword [esp + 0x34]
lea eax, [esp + 0x6c]
push eax
lea eax, [esp + 0xd0]
push eax
push dword [esp + 0x5c]
push ebx
push dword [esp + 0x40]
call fcn.1016a570
add esp, 0x1c
or eax, edx
jne 0x10169cf6
mov al, byte [esp + 0x40]
sub al, 0xd
cmp al, 3
ja 0x10169885
cmp dword [esp + 0xc4], 0x80008000
je 0x10169885
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x30]
movsx eax, al
mov edx, dword [ebx + eax*4 + 0x243b8]
cmp edx, dword [ecx + eax*4 + 0x14f4]
jae 0x10169756
mov dword [ecx + eax*4 + 0x14f4], edx
mov eax, dword [esp + 0x28]
mov esi, dword [eax + 0x5d140]
test esi, esi
je 0x10169881
movups xmm0, xmmword [0x108137a0]
mov eax, dword [ecx + 0x1514]
movups xmm2, xmmword [0x106b3990]
movups xmmword [esp + 0x1ac], xmm0
movups xmm0, xmmword [0x108137b0]
movups xmm3, xmmword [0x105f14e0]
movups xmm4, xmmword [0x10813790]
movups xmmword [esp + 0x1bc], xmm0
movups xmm0, xmmword [0x10813780]
movd xmm1, eax
movups xmmword [esp + 0x1cc], xmm0
shr eax, 0x1f
movups xmm0, xmmword [0x108137c0]
cvtdq2pd xmm1, xmm1
movups xmmword [esp + 0x1fc], xmm0
movsd xmm0, qword [0x1059ba70]
addsd xmm1, qword [eax*8 + 0x1059bac0]
mov eax, dword [esp + 0x4c]
movsd qword [esp + 0x27c], xmm0
movd xmm0, edx
cvtdq2pd xmm0, xmm0
movzx ecx, byte [eax + 0x108082a4]
shr edx, 0x1f
imul eax, esi, 0xb
addsd xmm0, qword [edx*8 + 0x1059bac0]
mov esi, dword [esp + 0x18]
movups xmmword [esp + 0x17c], xmm2
add ecx, eax
movups xmmword [esp + 0x18c], xmm2
movups xmmword [esp + 0x19c], xmm4
movups xmmword [esp + 0x1dc], xmm2
movups xmmword [esp + 0x1ec], xmm4
movups xmmword [esp + 0x20c], xmm3
movups xmmword [esp + 0x21c], xmm3
movups xmmword [esp + 0x22c], xmm2
movups xmmword [esp + 0x23c], xmm2
movups xmmword [esp + 0x24c], xmm3
movups xmmword [esp + 0x25c], xmm3
movups xmmword [esp + 0x26c], xmm3
mulsd xmm0, qword [esp + ecx*8 + 0x104]
comisd xmm0, xmm1
ja 0x10169cf6
jmp 0x10169885
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x64]
add dword [esi], eax
xor ecx, ecx
lea esi, [esp + 0xc4]
add edi, 0xc
cmp byte [esp + 0x17], cl
setg cl
lea ecx, [ecx*4 + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x18]
mov eax, dword [esi]
imul dword [ebx + 0x31cc]
add eax, 0x100
adc edx, 0
shrd eax, edx, 9
sar edx, 9
cmp edx, dword [esp + 0x3c]
jl 0x101698e8
jg 0x101698d3
cmp eax, dword [esp + 0x24]
jbe 0x101698e8
mov edi, dword [esp + 0x1c]
mov al, byte [edi + 5]
cmp al, 0xd
je 0x101698ec
cmp al, 0x11
jne 0x10169cf6
jmp 0x101698ec
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 0x5ced0]
test ecx, ecx
je 0x10169a05
cmp byte [esp + 0x17], 0
jle 0x10169a05
mov bl, byte [edi + 0x15]
xor edx, edx
test bl, bl
mov byte [esp + 0xf], bl
setg dl
inc ecx
inc edx
mov eax, edx
mov dword [esp + 0x74], edx
shl eax, cl
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x34]
test eax, eax
je 0x101699d8
mov ebx, dword [esp + 0x34]
lea eax, [esp + 0x382]
xor ecx, ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x20], ecx
cmp dword [eax - 2], 0x80008000
je 0x101699bc
mov dword [esp + 0x38], 0
add edi, 0xe
mov ebx, eax
mov dword [esp + 0x70], edx
movsx ecx, word [edi - 2]
lea ebx, [ebx + 4]
movsx eax, word [ebx - 6]
lea edi, [edi + 4]
sub eax, ecx
movsx ecx, word [edi - 4]
cdq
mov esi, eax
movsx eax, word [ebx - 4]
sub eax, ecx
xor esi, edx
sub esi, edx
cdq
xor eax, edx
sub eax, edx
add eax, dword [esp + 0x38]
add eax, esi
sub dword [esp + 0x70], 1
mov dword [esp + 0x38], eax
jne 0x10169960
cmp dword [esp + 0x58], 0xffffffff
mov edi, dword [esp + 0x1c]
jne 0x101699ac
cmp eax, dword [esp + 0x44]
jle 0x10169cee
mov ebx, dword [esp + 0x34]
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x2c]
inc ecx
add eax, 8
mov dword [esp + 0x20], ecx
mov dword [esp + 0x2c], eax
cmp ecx, ebx
jl 0x10169946
mov bl, byte [esp + 0xf]
mov eax, dword [esp + 0x34]
cmp eax, 2
jae 0x10169a01
mov esi, dword [esp + 0x1c]
lea edi, [esp + 0x380]
xor ecx, ecx
lea edi, [edi + eax*8]
add esi, 0xc
test bl, bl
setg cl
lea ecx, [ecx*4 + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx + 0x5cd2c]
mov dword [esp + 0x2c], eax
test eax, eax
je 0x10169e7c
mov al, byte [esp + 0x40]
cmp al, 0xf
je 0x10169a2b
cmp al, 0x17
jne 0x10169e7c
mov eax, dword [ecx]
xor edx, edx
mov edi, dword [esp + 0x10]
mov dword [esp + 0x44], eax
mov eax, dword [ebx + 0x10b0]
xor ebx, ebx
mov esi, dword [edi + 0x1ba8]
mov eax, dword [eax]
mov dword [esp + 0x74], eax
mov cl, byte [eax + 0x15]
test cl, cl
mov byte [esp + 0xf], cl
setg bl
inc ebx
nop dword [eax + eax]
movsx ecx, byte [edx + eax + 0x14]
lea eax, [ecx + ecx*8]
cmp byte [esi + eax*4 + 0x20], 0
mov eax, dword [esp + 0x30]
jne 0x10169b70
cmp dword [eax + ecx*4 + 0x14f4], 0x7fffffff
je 0x10169b70
mov eax, dword [esp + 0x74]
inc edx
cmp edx, ebx
jl 0x10169a60
xor eax, eax
xor ebx, ebx
cmp byte [esp + 0xf], al
mov edx, edi
mov dword [esp + 0x70], ebx
setg al
xor esi, esi
inc eax
mov dword [esp + 0x38], eax
lea edi, [edx + 0x110]
mov eax, dword [esp + 0x4c]
shl eax, 6
mov dword [esp + 0x20], eax
nop word [eax + eax]
lea ecx, [esp + 0xdc]
push ecx
push dword [edx + 0x28]
mov ecx, dword [esp + 0x4c]
push dword [edx + 0x18]
push dword [edi + 0x10]
mov eax, dword [eax + ecx + 0xc5d8]
push dword [edi]
call eax
mov eax, dword [esp + 0x88]
lea edi, [edi + 0x14]
mov edx, dword [esp + 0x44]
add esp, 0x14
mov ecx, dword [esp + 0x70]
add ebx, dword [esp + 0xdc]
movsx eax, byte [eax + esi + 0x14]
inc esi
add ecx, dword [edx + eax*4 + 0x14f4]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x70], ecx
cmp esi, dword [esp + 0x38]
jl 0x10169ac0
cmp dword [esp + 0x2c], 1
jle 0x10169b2c
movsd xmm2, qword [0x1059ba70]
jmp 0x10169b34
movsd xmm2, qword [0x105c1468]
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
shr ecx, 0x1f
movd xmm1, ebx
addsd xmm0, qword [ecx*8 + 0x1059bac0]
cvtdq2pd xmm1, xmm1
shr ebx, 0x1f
mulsd xmm0, xmm2
addsd xmm1, qword [ebx*8 + 0x1059bac0]
comisd xmm1, xmm0
ja 0x1016a53e
mov eax, dword [esp + 0x30]
mov edi, edx
mov ecx, dword [esp + 0x28]
cmp byte [esp + 0x17], 0
mov ebx, dword [edi + 0xe0]
mov esi, dword [edi + 0xe4]
mov dword [esp + 0x94], 0
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x20], esi
jle 0x10169bf5
lea edx, [esp + 0x94]
push edx
push dword [esp + 0xb4]
lea edx, [esp + 0x6c]
push dword [esp + 0x20]
push edx
lea edx, [esp + 0x350]
push edx
lea edx, [esp + 0x33c]
push edx
push dword [esp + 0x110]
lea edx, [esp + 0x6c]
push edx
push dword [esp + 0x6c]
lea edx, [esp + 0xe8]
push edx
push dword [esp + 0x64]
push dword [esp + 0x50]
push eax
push edi
push ecx
call fcn.1016d5f0
add esp, 0x3c
test eax, eax
jne 0x10169cea
mov eax, dword [esp + 0x30]
cmp byte [eax + 0x50], 0
jne 0x10169fdc
push dword [esp + 0x3c]
push dword [esp + 0x28]
push eax
lea eax, [esp + 0xa0]
push eax
lea eax, [esp + 0xf0]
push eax
lea eax, [esp + 0xbc]
push eax
lea eax, [esp + 0x340]
push eax
lea eax, [esp + 0x35c]
push eax
push dword [esp + 0x6c]
push dword [esp + 0xd8]
push dword [esp + 0x50]
push edi
call fcn.10464150
mov esi, eax
add esp, 0x30
mov eax, dword [esp + 0x30]
mov ebx, edx
mov edi, dword [eax + 0x3c]
test edi, edi
je 0x10169c8c
cmp byte [esp + 0x17], 0
jg 0x10169c8c
movzx ecx, byte [esp + 0x40]
mov eax, dword [esp + 0x34]
lea eax, [eax + ecx*2]
add eax, ecx
mov ecx, dword [esp + 0x60]
lea edx, [ecx + eax*8]
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0xac]
mov dword [edi + edx*8], eax
mov dword [edi + edx*8 + 4], ecx
or esi, ebx
je 0x10169e89
movups xmm0, xmmword [esp + 0x328]
mov edx, dword [esp + 0x5c]
xor ecx, ecx
movups xmmword [esp + 0x358], xmm0
movq xmm0, qword [esp + 0x338]
movq qword [esp + 0x368], xmm0
nop dword [eax]
mov eax, dword [esp + ecx*4 + 0x358]
lea edx, [edx + 0x538]
mov dword [edx - 0x548], eax
mov eax, dword [esp + ecx*4 + 0x364]
inc ecx
mov dword [edx - 0x538], eax
cmp ecx, dword [esp + 0x88]
jl 0x10169cc0
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x34]
add dword [esp + 0x98], 0x14
inc edx
add dword [esp + 0xa4], 0x14
mov dword [esp + 0x34], edx
cmp edx, dword [esp + 0x54]
jl 0x10169420
cmp dword [esp + 0x9c], 0xffffffff
jne 0x10169d34
cmp dword [esp + 0xa0], 0x7fffffff
je 0x1016a54d
movups xmm0, xmmword [esp + 0x11c]
mov eax, dword [esp + 0x68]
mov ecx, 0x29
mov edx, dword [esp + 0xf4]
movups xmmword [esi], xmm0
movups xmm0, xmmword [esp + 0x12c]
movups xmmword [esi + 0x10], xmm0
movq xmm0, qword [esp + 0x104]
movq qword [esi + 0x20], xmm0
lea esi, [esp + 0x284]
movups xmm0, xmmword [esp + 0x13c]
movups xmmword [eax], xmm0
movups xmm0, xmmword [esp + 0x14c]
movups xmmword [eax + 0x10], xmm0
movq xmm0, qword [esp + 0x10c]
movq qword [eax + 0x20], xmm0
mov eax, dword [esp + 0x6c]
movups xmm0, xmmword [esp + 0x15c]
movups xmmword [eax], xmm0
movups xmm0, xmmword [esp + 0x16c]
movups xmmword [eax + 0x10], xmm0
movq xmm0, qword [esp + 0x114]
movq qword [eax + 0x20], xmm0
mov eax, dword [esp + 0xb8]
mov dword [edx], eax
mov eax, dword [esp + 0xbc]
mov dword [edx + 4], eax
mov eax, dword [esp + 0xc0]
rep movsd dword es:[edi], dword [esi]
mov byte [ebx + 0x23b80], al
movzx eax, byte [ebx + 0x1235]
movzx ecx, byte [ebx + 0x1234]
imul ecx, eax
lea eax, [esp + 0x3cc]
push ecx
push eax
lea eax, [ebx + 0x23b81]
push eax
call fcn.105137c0
movzx eax, byte [ebx + 0x1235]
movzx ecx, byte [ebx + 0x1234]
imul ecx, eax
lea eax, [esp + 0x7d8]
push ecx
push eax
push dword [ebx + 0x10c8]
call fcn.105137c0
mov ebx, dword [esp + 0x30]
add esp, 0x18
mov ecx, dword [esp + 0x10]
mov eax, dword [ebx]
imul dword [ecx + 0x31cc]
mov ecx, dword [ebx + 8]
mov esi, dword [ebx + 0xc]
add eax, 0x100
adc edx, 0
shld esi, ecx, 7
shrd eax, edx, 9
shl ecx, 7
sar edx, 9
add eax, ecx
mov dword [ebx + 0x10], eax
adc edx, esi
mov dword [ebx + 0x14], edx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xbc0]
xor ecx, esp
call fcn.105116c0
add esp, 0xbc4
ret
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x30]
jmp 0x10169b74
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0xac]
mov edi, dword [esp + 0xa8]
cmp dword [eax + 0x5cf0c], 0
je 0x10169f12
cmp dword [esp + 0x24], 0xffffffff
jne 0x10169eb5
cmp dword [esp + 0x3c], 0x7fffffff
je 0x10169f12
mov esi, edi
mov edx, ebx
shrd esi, edx, 3
sar edx, 3
mov eax, esi
mov ecx, edx
shld ecx, eax, 1
add eax, eax
add esi, eax
adc edx, ecx
cmp edx, dword [esp + 0x3c]
jl 0x10169f12
jg 0x10169edc
cmp esi, dword [esp + 0x24]
jbe 0x10169f12
push dword [esp + 0x88]
movups xmm0, xmmword [esp + 0x32c]
sub esp, 0x18
mov eax, esp
push dword [esp + 0x64]
movups xmmword [eax], xmm0
movq xmm0, qword [esp + 0x358]
movq qword [eax + 0x10], xmm0
call fcn.1016f710
add esp, 0x20
jmp 0x10169cea
mov eax, dword [esp + 0x30]
mov esi, dword [eax + 0x3c]
test esi, esi
je 0x10169fd4
cmp byte [esp + 0x17], 0
jle 0x10169fd4
movzx eax, byte [esp + 0x40]
movzx ecx, byte [eax + 0x108079a8]
movzx edx, byte [eax + 0x108079c4]
mov eax, dword [esp + 0x34]
lea eax, [eax + ecx*2]
add eax, ecx
mov ecx, dword [esp + 0x60]
lea eax, [ecx + eax*8]
mov ecx, dword [esi + eax*8]
mov eax, dword [esi + eax*8 + 4]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x34]
lea eax, [eax + edx*2]
add eax, edx
mov edx, dword [esp + 0x80]
lea eax, [edx + eax*8]
mov edx, dword [esi + eax*8]
mov eax, dword [esi + eax*8 + 4]
mov esi, dword [esp + 0x38]
cmp esi, eax
jg 0x10169f86
jl 0x10169f82
cmp ecx, edx
jae 0x10169f86
mov edx, ecx
jmp 0x10169f88
mov esi, eax
shrd edi, ebx, 3
sar ebx, 3
mov eax, edi
mov ecx, ebx
shld ecx, eax, 1
add eax, eax
add edi, eax
adc ebx, ecx
shld ebx, edi, 1
add edi, edi
cmp ebx, esi
jl 0x10169fd4
jg 0x10169fad
cmp edi, edx
jbe 0x10169fd4
cmp dword [esp + 0x3c], 0x7fffffff
jg 0x10169fd4
jl 0x10169edc
mov edi, dword [esp + 0x24]
cmp edi, 0xffffffff
jb 0x10169edc
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x20]
jmp 0x10169fe0
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x50]
add dword [ecx], eax
cmp dword [esp + 0x94], 1
je 0x1016a035
mov edx, dword [esp + 0x84]
mov ecx, 2
mov dword [esp + 0x44], 0
mov eax, dword [edx + 0x3bb8]
cmp byte [eax + 0x4d], 0
lea eax, [esp + 0x328]
cmovne ecx, dword [esp + 0x44]
push ecx
push 0
push dword [esp + 0x54]
push eax
push esi
push ebx
push dword [esp + 0x60]
push edx
call fcn.101152f0
add esp, 0x20
mov esi, dword [esp + 0x18]
mov ebx, dword [esp + 0x10]
mov eax, dword [esi]
mov dword [esp + 0x50], eax
lea eax, [esp + 0xfc]
push eax
push 0
push dword [esp + 0xec]
lea eax, [esp + 0x334]
push dword [esp + 0xc14]
push dword [esp + 0xf8]
push eax
lea eax, [esp + 0x7c]
push eax
push dword [esp + 0xcc]
push dword [esp + 0x5c]
push edi
push dword [esp + 0x58]
push dword [esp + 0x98]
push dword [esp + 0x98]
push esi
push dword [esp + 0x84]
push ebx
push dword [esp + 0xf4]
push dword [esp + 0x6c]
call fcn.1016bbc0
add esp, 0x48
cmp eax, 0xffffffff
jne 0x1016a0ba
cmp edx, 0x7fffffff
je 0x1016a4d9
mov eax, dword [esi]
imul dword [ebx + 0x31cc]
mov ecx, dword [esp + 0x18]
mov edi, eax
mov esi, edx
add edi, 0x100
mov eax, dword [ecx + 8]
adc esi, 0
mov ecx, dword [ecx + 0xc]
shld ecx, eax, 7
shrd edi, esi, 9
shl eax, 7
sar esi, 9
add edi, eax
mov eax, dword [esp + 0x1c]
adc esi, ecx
mov dword [esp + 0x2c], edi
mov dword [esp + 0x38], esi
mov dl, byte [eax + 0x15]
mov bl, byte [eax + 0x14]
mov al, byte [eax + 5]
cmp al, 0xd
jae 0x1016a113
movzx eax, al
mov dh, byte [eax + 0x1081323c]
mov byte [esp + 0xf], dh
jmp 0x1016a151
cmp al, 0x11
jae 0x1016a12a
movzx ecx, al
movsx eax, bl
mov dh, byte [eax + ecx*8 + 0x108131e4]
mov byte [esp + 0xf], dh
jmp 0x1016a151
cmp al, 0x19
jae 0x1016a14c
cmp dl, 0xff
je 0x1016a14c
movzx ecx, al
movsx eax, bl
lea ecx, [eax + ecx*8]
movsx eax, dl
mov dh, byte [eax + ecx*8 + 0x10812e30]
mov byte [esp + 0xf], dh
jmp 0x1016a151
mov byte [esp + 0xf], 0xff
mov eax, dword [esp + 0x28]
xor ebx, ebx
movzx ecx, byte [eax + 0x5d038]
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x1b5dc]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x1c]
mov dl, byte [eax + 0x86]
test ecx, ecx
je 0x1016a374
cmp edi, 0xffffffff
jne 0x1016a18f
cmp esi, 0x7fffffff
je 0x1016a374
mov eax, dword [esp + 0x28]
mov al, byte [eax + 0x3abf0]
test al, al
je 0x1016a1a9
cmp al, 2
je 0x1016a1a9
test dl, dl
jne 0x1016a370
mov eax, dword [esp + 0x10]
mov edx, dword [ecx*4 + 0x1081366c]
mov dword [esp + 0x44], edx
mov ecx, dword [eax + 0x1b5e0]
test ecx, ecx
je 0x1016a221
xor ebx, ebx
test ecx, ecx
jle 0x1016a1e6
mov eax, dword [esp + 0x20]
add eax, 0xd0
cmp dword [eax + 4], esi
jg 0x1016a1e6
jl 0x1016a1dc
cmp dword [eax], edi
ja 0x1016a1e6
inc ebx
add eax, 0x40e8
cmp ebx, ecx
jl 0x1016a1d1
cmp ebx, edx
je 0x1016a370
lea eax, [edx - 1]
cmp ebx, eax
jge 0x1016a221
mov ecx, dword [esp + 0x20]
imul eax, ebx, 0x40e8
add ecx, eax
mov eax, edx
sub eax, ebx
imul eax, eax, 0x40e8
sub eax, 0x40e8
push eax
push ecx
lea eax, [ecx + 0x40e8]
push eax
call fcn.105137c0
add esp, 0xc
mov esi, dword [esp + 0x1c]
mov ecx, 0x29
imul eax, ebx, 0x40e8
add eax, dword [esp + 0x20]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov cl, byte [esp + 0xf]
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x38]
mov dword [eax + 0xd0], edi
mov dword [eax + 0xd4], esi
mov byte [eax + 0x40e0], cl
mov eax, dword [esp + 0x28]
mov al, byte [eax + 0x3abf0]
test al, al
je 0x1016a350
cmp al, 2
je 0x1016a350
cmp dword [esp + 0x68], 0
je 0x1016a350
cmp dword [esp + 0x6c], 0
je 0x1016a350
push dword [esp + 0xec]
call fcn.10140180
mov edx, eax
add esp, 4
mov eax, dword [esp + 0x1c]
cmp byte [eax + 0x88], 0
je 0x1016a2ba
movzx ecx, byte [esp + 0xf]
cmp byte [ecx + ecx*2 + 0x10813470], 0xd
jb 0x1016a2ba
mov ecx, 1
jmp 0x1016a2bc
xor ecx, ecx
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x18]
imul eax, ebx, 0x40e8
cmp dword [esp + 0xc08], 0
movups xmm0, xmmword [edi]
mov edi, dword [esp + 0x20]
movups xmmword [eax + edi + 0xa8], xmm0
movups xmm0, xmmword [esi + 0x10]
movups xmmword [eax + edi + 0xb8], xmm0
movq xmm0, qword [esi + 0x20]
mov esi, dword [esp + 0x38]
movq qword [eax + edi + 0xc8], xmm0
mov edi, dword [esp + 0x2c]
je 0x1016a350
mov eax, dword [esp + 0x18]
cmp byte [eax + 0x20], 0
jne 0x1016a313
test ecx, ecx
je 0x1016a318
mov ecx, 4
mov eax, dword [esp + 0x10]
lea eax, [eax + edx*8]
mov edx, dword [esp + 0x20]
mov ecx, dword [eax + ecx + 0x7c38]
mov eax, dword [esp + 0x68]
add ecx, dword [eax]
imul eax, ebx, 0x40e8
mov dword [eax + edx + 0xd8], ecx
mov eax, dword [esp + 0x6c]
imul ecx, ebx, 0x40e8
mov eax, dword [eax]
mov dword [ecx + edx + 0xdc], eax
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0x44]
mov eax, dword [ebx + 0x1b5e0]
inc eax
cmp eax, ecx
cmovl ecx, eax
mov eax, dword [esp + 0x1c]
mov dword [ebx + 0x1b5e0], ecx
jmp 0x1016a378
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x10]
cmp esi, dword [esp + 0xa0]
jg 0x1016a4b3
jl 0x1016a394
cmp edi, dword [esp + 0x9c]
jae 0x1016a4b3
mov ecx, dword [esp + 0xfc]
mov dword [esp + 0xb8], ecx
mov ecx, dword [esp + 0x100]
mov dword [esp + 0xbc], ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0xa0], esi
mov esi, eax
movzx eax, byte [ebx + 0x23b80]
mov dword [esp + 0x9c], edi
lea edi, [esp + 0x284]
movups xmm0, xmmword [ecx]
mov dword [esp + 0xc0], eax
movzx eax, byte [ebx + 0x1234]
movups xmmword [esp + 0x11c], xmm0
movups xmm0, xmmword [ecx + 0x10]
movups xmmword [esp + 0x12c], xmm0
movq xmm0, qword [ecx + 0x20]
mov ecx, dword [esp + 0x68]
movq qword [esp + 0x104], xmm0
movups xmm0, xmmword [ecx]
movups xmmword [esp + 0x13c], xmm0
movups xmm0, xmmword [ecx + 0x10]
movups xmmword [esp + 0x14c], xmm0
movq xmm0, qword [ecx + 0x20]
mov ecx, dword [esp + 0x6c]
movq qword [esp + 0x10c], xmm0
movups xmm0, xmmword [ecx]
movups xmmword [esp + 0x15c], xmm0
movups xmm0, xmmword [ecx + 0x10]
movups xmmword [esp + 0x16c], xmm0
movq xmm0, qword [ecx + 0x20]
mov ecx, 0x29
rep movsd dword es:[edi], dword [esi]
movzx esi, byte [ebx + 0x1235]
imul esi, eax
lea eax, [ebx + 0x23b81]
movq qword [esp + 0x114], xmm0
push esi
push eax
lea eax, [esp + 0x3d4]
push eax
call fcn.105137c0
push esi
push dword [ebx + 0x10c8]
lea eax, [esp + 0x7e0]
push eax
call fcn.105137c0
mov ecx, dword [esp + 0x108]
add esp, 0x18
mov eax, dword [esp + 0x64]
mov esi, dword [esp + 0x38]
mov dword [ecx + 0xa4], eax
mov eax, dword [esp + 0x50]
mov dword [ecx + 0xa8], eax
cmp esi, dword [esp + 0x3c]
jg 0x1016a4d5
mov eax, dword [esp + 0x2c]
jl 0x1016a4c5
cmp eax, dword [esp + 0x24]
jae 0x1016a4d5
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x3c], esi
mov dword [esp + 0x58], eax
mov esi, dword [esp + 0x18]
movups xmm0, xmmword [esp + 0x328]
mov edx, dword [esp + 0x5c]
xor ecx, ecx
mov ebx, dword [esp + 0x88]
movups xmmword [esp + 0x358], xmm0
movq xmm0, qword [esp + 0x338]
movq qword [esp + 0x368], xmm0
nop dword [eax + eax]
mov eax, dword [esp + ecx*4 + 0x358]
lea edx, [edx + 0x538]
mov dword [edx - 0x548], eax
mov eax, dword [esp + ecx*4 + 0x364]
inc ecx
mov dword [edx - 0x538], eax
cmp ecx, ebx
jl 0x1016a510
mov edi, dword [esp + 0x1c]
jmp 0x10169cf2
mov edi, dword [esp + 0x1c]
mov ebx, edx
mov esi, dword [esp + 0x18]
jmp 0x10169cf6
mov ecx, dword [esp + 0xbcc]
or eax, 0xffffffff
pop edi
pop esi
pop ebx
xor ecx, esp
mov edx, closesocket
call fcn.105116c0
add esp, 0xbc4
ret