Function at 0x43c5d0
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
push edi
mov edi, ecx
cmp byte [edi + 4], 0
je 0x43c5ed
lock inc dword [edi]
cmp byte [edi + 4], 0
jne 0x43c5f8
lock dec dword [edi]
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ebx, dword [ebp + 0xc]
lea edx, [edi + 0x40]
push ebx
push dword [ebp + 8]
lea ecx, [edi + 0x38]
call fcn.0043b900
mov esi, eax
add esp, 8
test esi, esi
jne 0x43c7b7
test bx, bx
je 0x43c709
lea eax, [edi + 0x7c]
push eax
call fcn.00485789
mov edx, dword [ebp + 8]
add esp, 4
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [ebp - 4], edx
imul ecx, eax, 0x1000193
mov eax, edx
shr eax, 8
movzx eax, al
xor ecx, eax
mov eax, edx
imul ecx, ecx, 0x1000193
shr eax, 0x10
movzx eax, al
xor ecx, eax
mov eax, edx
imul ecx, ecx, 0x1000193
shr eax, 0x18
xor ecx, eax
imul eax, ecx, 0x1000193
lea ecx, [edi + 0x80]
push eax
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x10]
push eax
call fcn.00424960
mov edx, dword [eax + 4]
test edx, edx
je 0x43c6c1
cmp edx, dword [edi + 0x84]
je 0x43c6c1
mov esi, dword [edx + 0xc]
mov edx, dword [edx + 0x10]
cmp esi, edx
je 0x43c6c1
nop word [eax + eax]
movzx ecx, word [esi + 0x18]
cmp cx, bx
ja 0x43c6af
cmp bx, word [esi + 0x1a]
jbe 0x43c6ec
cmp cx, word [esi + 0x1a]
jne 0x43c6ba
test cx, cx
je 0x43c6ec
add esi, 0x1c
cmp esi, edx
jne 0x43c6a0
lea eax, [edi + 0x7c]
push eax
call fcn.004857a5
mov esi, dword [edi + 0x2c]
add esp, 4
mov eax, dword [edi + 0x30]
cmp esi, eax
je 0x43c709
cmp word [esi + 0x18], bx
ja 0x43c6e3
cmp bx, word [esi + 0x1a]
jbe 0x43c701
add esi, 0x1c
cmp esi, eax
jne 0x43c6d7
jmp 0x43c709
test esi, esi
je 0x43c6c1
lea eax, [edi + 0x7c]
push eax
call fcn.004857a5
add esp, 4
jmp 0x43c7bd
test esi, esi
jne 0x43c7b7
mov esi, dword [edi + 0x74]
cmp esi, dword [edi + 0x70]
je 0x43c7b5
mov eax, esi
mov dword [ebp - 4], eax
nop word [eax + eax]
mov ecx, 0x20
add esi, 0xffffffdc
sub ecx, dword [eax - 0x24]
or eax, 0xffffffff
shl eax, cl
push eax
call dword [sym.imp.WS2_32.dll_htonl]
mov ebx, eax
mov eax, dword [ebp - 4]
and ebx, dword [ebp + 8]
add eax, 0xffffffe0
mov dword [ebp - 0xc], eax
movzx ecx, bl
xor ecx, 0x811c9dc5
mov dword [ebp - 8], ebx
imul edx, ecx, 0x1000193
mov ecx, ebx
shr ecx, 8
movzx eax, cl
xor edx, eax
mov eax, ebx
shr eax, 0x10
movzx eax, al
imul ecx, edx, 0x1000193
shr ebx, 0x18
xor ecx, eax
imul eax, ecx, 0x1000193
xor eax, ebx
mov ebx, dword [ebp - 0xc]
imul eax, eax, 0x1000193
mov ecx, ebx
push eax
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.00424960
mov eax, dword [eax + 4]
test eax, eax
jne 0x43c79f
mov eax, dword [ebx + 4]
mov ecx, dword [ebp - 4]
cmp eax, dword [ecx - 0x1c]
jne 0x43c818
mov eax, esi
mov dword [ebp - 4], esi
cmp esi, dword [edi + 0x70]
jne 0x43c720
xor esi, esi
xor ebx, ebx
test esi, esi
je 0x43c82b
lea eax, [edi + 8]
push eax
call fcn.00485789
add esp, 4
lea eax, [edi + 0xc]
cmp dword [esi + 0x14], 0xf
mov ebx, esi
jbe 0x43c7d6
mov ebx, dword [esi]
xor ecx, ecx
mov edx, 0x811c9dc5
cmp dword [esi + 0x10], ecx
jbe 0x43c7f7
movzx eax, byte [ebx + ecx]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, dword [esi + 0x10]
jb 0x43c7e2
lea eax, [edi + 0xc]
push edx
push esi
lea ecx, [ebp - 0x10]
push ecx
mov ecx, eax
call fcn.0040b540
mov eax, dword [eax + 4]
test eax, eax
jne 0x43c80e
mov eax, dword [edi + 0x10]
cmp eax, dword [edi + 0x10]
je 0x43c81d
mov ebx, dword [eax + 0x20]
jmp 0x43c81f
lea esi, [eax + 0xc]
jmp 0x43c7b7
xor ebx, ebx
lea ecx, [edi + 8]
push ecx
call fcn.004857a5
add esp, 4
lock dec dword [edi]
pop edi
pop esi
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
ret 8