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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x58
mov edi, dword [ebp + 8]
movzx eax, word [edi]
mov dword [esp + 0x28], 0x63629bad
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0xf
ja 0x434ffc
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0x28]
lea esi, [ecx + edx]
add esi, 0x8a1440b0
add ecx, 0x8a1440b0
and ecx, edx
add ecx, ecx
mov edx, ecx
xor edx, esi
not ecx
and ecx, esi
add ecx, ecx
sub ecx, edx
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x1c]
add cl, 0x30
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x28], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0x10
jb 0x434fb0
xor ecx, ecx
cmp dword [esp + 0x28], eax
setne cl
xor ebx, ebx
jmp dword [ecx*4 + 0x44001c]
mov eax, dword [edi + 0x3c]
mov ecx, dword [edi + eax]
mov dword [esp + 0x28], 0xbbb8fee6
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 4]
cmp edx, 0xf
ja 0x43508c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 4]
mov esi, dword [esp + 4]
movzx esi, byte [esp + esi + 0x28]
lea edi, [edx - 0x1ad8e4c9]
add edx, 0x37
and edx, esi
or edi, esi
sub edi, edx
mov dword [esp + 0x1c], edi
mov edx, dword [esp + 0x1c]
add dl, 0x7f
mov esi, dword [esp + 4]
mov byte [esp + esi + 0x28], dl
inc dword [esp + 4]
mov edx, dword [esp + 4]
cmp edx, 0x10
jb 0x435050
xor edx, edx
cmp ecx, dword [esp + 0x28]
setne dl
xor ebx, ebx
mov edi, dword [ebp + 8]
jmp dword [edx*4 + 0x440024]
xor ecx, ecx
cmp dword [edi + eax + 0x7c], 0
sete cl
xor ebx, ebx
jmp dword [ecx*4 + 0x44002c]
mov ecx, dword [edi + eax + 0x78]
xor eax, eax
test ecx, ecx
sete al
xor ebx, ebx
jmp dword [eax*4 + 0x440034]
jmp dword [0x440048]
mov eax, dword [edi + ecx + 0x20]
add eax, edi
mov dword [esp + 0x48], eax
mov eax, dword [edi + ecx + 0x24]
add eax, edi
mov dword [esp + 0x24], eax
mov eax, dword [edi + ecx + 0x1c]
add eax, edi
mov dword [esp + 0x20], eax
mov esi, dword [0x441d70]
xor eax, eax
test esi, esi
sete al
mov dword [esp + 0xc], ecx
jmp dword [eax*4 + 0x44004c]
mov edx, edi
mov edi, dword [0x441d6c]
mov eax, edi
mov ebx, ecx
xor ecx, ecx
sub ecx, dword [edx + ebx + 0x18]
neg eax
mov edx, ecx
and edx, eax
xor ecx, eax
lea eax, [ecx + edx*2]
neg eax
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x43513c
shl eax, 3
mov ecx, eax
push ecx
call fcn.00408f60
add esp, 4
mov ebx, eax
mov ecx, edi
and ecx, 8
mov eax, edi
or edi, 8
imul edi, ecx
xor ecx, 8
and eax, 0xfffffff7
imul eax, ecx
lea edx, [eax + edi]
cmp ebx, esi
jbe 0x43558d
lea ecx, [esi + edx]
cmp ecx, ebx
jbe 0x43558d
mov dword [esp + 8], ebx
test edx, edx
je 0x4351dd
lea ecx, [esi + eax]
dec ecx
mov edx, dword [esp + 8]
add edx, eax
dec edx
neg eax
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [ecx + edi]
mov byte [edx + edi], bl
movzx ebx, byte [ecx + edi - 1]
mov byte [edx + edi - 1], bl
movzx ebx, byte [ecx + edi - 2]
mov byte [edx + edi - 2], bl
movzx ebx, byte [ecx + edi - 3]
mov byte [edx + edi - 3], bl
movzx ebx, byte [ecx + edi - 4]
mov byte [edx + edi - 4], bl
movzx ebx, byte [ecx + edi - 5]
mov byte [edx + edi - 5], bl
movzx ebx, byte [ecx + edi - 6]
mov byte [edx + edi - 6], bl
movzx ebx, byte [ecx + edi - 7]
mov byte [edx + edi - 7], bl
add edi, 0xfffffff8
cmp eax, edi
jne 0x435190
xor eax, eax
test esi, esi
sete al
mov ebx, dword [esp + 8]
jmp dword [eax*4 + 0x440054]
push esi
call fcn.00408f70
add esp, 4
mov edi, dword [ebp + 8]
jmp 0x43521d
mov eax, dword [edi + ecx + 0x18]
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x435212
shl eax, 3
mov ecx, eax
push ecx
call fcn.00408f60
add esp, 4
mov ebx, eax
mov ecx, dword [esp + 0xc]
mov dword [0x441d70], ebx
mov eax, dword [case.0x4355bb.4]
nop
nop
nop
nop
jmp eax
xor ebx, ebx
xor eax, eax
cmp ebx, dword [edi + ecx + 0x18]
setb al
xor ecx, ecx
jmp dword [eax*4 + 0x44006c]
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0x48]
mov dword [esp + 0x18], ecx
mov ecx, dword [eax + ecx*4]
lea eax, [edi + ecx]
add ecx, edi
dec ecx
mov edx, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
inc ecx
cmp byte [edx], 0
lea edx, [edx + 1]
jne 0x435270
mov edx, ecx
xor edx, eax
mov ebx, eax
not ebx
and ebx, ecx
add ebx, ebx
mov esi, ebx
mov edi, 0x506dff3e
sub esi, edx
je 0x435301
not edx
add ebx, edx
mov ecx, esi
and ecx, 3
mov edx, eax
cmp ebx, 3
jb 0x4352e7
and esi, 0xfffffffc
mov edx, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ebx, byte [edx]
xor ebx, edi
imul edi, ebx, 0x1000193
movsx ebx, byte [edx + 1]
xor ebx, edi
imul edi, ebx, 0x1000193
movsx ebx, byte [edx + 2]
xor ebx, edi
imul edi, ebx, 0x1000193
movsx ebx, byte [edx + 3]
add edx, 4
xor ebx, edi
imul edi, ebx, 0x1000193
add esi, 0xfffffffc
jne 0x4352b0
test ecx, ecx
je 0x435301
xor esi, esi
nop
nop
nop
movsx ebx, byte [edx + esi]
xor ebx, edi
imul edi, ebx, 0x1000193
inc esi
cmp ecx, esi
jne 0x4352f0
xor ecx, ecx
cmp dword [0x441d74], 0
sete cl
mov ebx, dword [esp + 0x14]
jmp dword [ecx*4 + 0x440074]
mov ecx, dword [case.0x4355bb.13]
nop
nop
jmp ecx
xor ecx, ecx
cmp edi, 0x8b8789dc
sete cl
jmp dword [ecx*4 + 0x44008c]
xor ecx, ecx
cmp byte [eax], 0x4e
setne cl
jmp dword [ecx*4 + 0x440094]
xor ecx, ecx
cmp byte [eax + 1], 0x74
setne cl
jmp dword [ecx*4 + 0x44009c]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x18]
movzx eax, word [eax + ecx*2]
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + eax*4]
add eax, dword [ebp + 8]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x10], 0xffffffff
xor edx, edx
jmp case.0x4355bb.42
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 8]
jmp dword [eax*4 + 0x4400fc]
mov eax, dword [esp + 0x4c]
add eax, edx
mov ecx, dword [case.0x4355bb.23]
nop
nop
nop
nop
nop
jmp ecx
xor ecx, ecx
cmp edx, 0x20
setl cl
jmp dword [ecx*4 + 0x4400b4]
mov dword [esp + 8], edx
lea ecx, [esp + 0x28]
push ecx
push eax
call fcn.00401000
add esp, 8
mov dword [esp + 0x50], eax
mov ecx, dword [case.0x4355bb.28]
nop
nop
nop
jmp ecx
mov ecx, dword [esp + 0x40]
mov edx, ecx
shr edx, 0xa
and edx, 4
mov eax, 1
jmp dword [edx + 0x4400cc]
movzx ebx, byte [esp + 0x2e]
xor edx, edx
cmp bl, 0xc2
sete dl
jmp dword [edx*4 + 0x4400d4]
mov edx, ecx
not edx
lea esi, [ecx + ecx]
not esi
add esi, ecx
and esi, edx
not esi
shr esi, 1
and esi, 4
jmp dword [esi + 0x4400dc]
xor edx, edx
cmp bl, 0xc3
sete dl
jmp dword [edx*4 + 0x4400e4]
xor edx, edx
cmp bl, 0xb8
sete dl
jmp dword [edx*4 + 0x4400ec]
lea edx, [ecx + ecx]
and edx, 0xffffffde
neg edx
add edx, ecx
add edx, 0xffffffef
xor ebx, ebx
test edx, ecx
setne bl
jmp dword [ebx*4 + 0x4400f4]
mov edx, dword [esp + 8]
add edx, dword [esp + 0x50]
xor eax, eax
mov ebx, dword [esp + 0x14]
jmp dword [eax*4 + 0x4400fc]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x10], ecx
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 8]
jmp dword [eax*4 + 0x4400fc]
xor eax, eax
cmp dword [esp + 0x10], 0xffffffff
setne al
jmp dword [eax*4 + 0x440104]
xor eax, eax
xor edx, edx
cmp eax, dword [0x441d6c]
setb dl
xor ecx, ecx
jmp dword [edx*4 + 0x44010c]
mov ecx, dword [esp + 0x10]
mov dword [edx + eax*8 + 4], ecx
xor edx, edx
mov cl, 1
jmp dword [edx*4 + 0x44011c]
inc eax
xor edx, edx
cmp eax, dword [0x441d6c]
setb dl
jmp dword [edx*4 + 0x44010c]
mov edx, dword [0x441d70]
xor ebx, ebx
cmp dword [edx + eax*8], edi
sete bl
jmp dword [ebx*4 + 0x440114]
mov edx, 1
jmp dword [edx*4 + 0x44011c]
and cl, 1
movzx eax, cl
mov bl, 1
jmp dword [eax*4 + 0x440124]
mov eax, dword [0x441d70]
mov ecx, dword [0x441d6c]
lea edx, [ecx + 1]
mov dword [0x441d6c], edx
mov edx, dword [esp + 0x10]
mov dword [eax + ecx*8 + 4], edx
mov dword [eax + ecx*8], edi
jmp case.0x4355bb.17
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x18]
movzx eax, word [eax + ecx*2]
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + eax*4]
mov dword [0x441d74], eax
jmp case.0x4355bb.17
nop
nop
nop
nop
nop
nop
mov eax, dword [case.0x4355bb.56]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
mov edx, dword [esp + 0x18]
inc edx
xor eax, eax
mov edi, dword [ebp + 8]
mov ecx, dword [esp + 0xc]
cmp edx, dword [edi + ecx + 0x18]
mov ecx, edx
setb al
jmp dword [eax*4 + 0x44006c]
and bl, 1
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, edx
shr ecx, 2
and edx, 0xfffffffc
mov eax, ebx
add eax, edx
add edx, esi
mov edi, ebx
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov edi, eax
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov esi, dword [0x441d70]
xor eax, eax
test esi, esi
sete al
jmp dword [eax*4 + 0x440054]