Function at 0x401c10
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x108eafd
mov eax, dword fs:[0]
push eax
sub esp, 0x750
mov eax, dword [0x109301c]
xor eax, esp
mov dword [esp + 0x748], eax
push ebx
push esi
push edi
mov eax, dword [0x109301c]
xor eax, esp
push eax
lea eax, [esp + 0x760]
mov dword fs:[0], eax
push 0x206
xor ebx, ebx
lea ecx, [esp + 0x142]
xor eax, eax
push ebx
push ecx
mov word [esp + 0x148], ax
call fcn.00409340
add esp, 0xc
push 0x206
lea eax, [esp + 0x34a]
xor edx, edx
push ebx
push eax
mov word [esp + 0x350], dx
call fcn.00409340
add esp, 0xc
push 0x206
lea edx, [esp + 0x552]
xor ecx, ecx
push ebx
push edx
mov word [esp + 0x558], cx
call fcn.00409340
mov eax, 7
xor ecx, ecx
add esp, 0xc
mov dword [esp + 0xa8], eax
mov dword [esp + 0xa4], ebx
mov word [esp + 0x94], cx
mov dword [esp + 0x768], ebx
xor edx, edx
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc0], ebx
mov word [esp + 0xb0], dx
mov dword [esp + 0xfc], eax
xor eax, eax
mov dword [esp + 0xf8], ebx
mov word [esp + 0xe8], ax
mov byte [esp + 0x768], 2
lea edi, [ebx + 0x17]
mov eax, 0x1091094
lea esi, [esp + 0x5c]
mov dword [esp + 0x70], 0xf
mov dword [esp + 0x6c], ebx
mov byte [esp + 0x5c], bl
call fcn.00403c60
mov byte [esp + 0x768], 3
lea edi, [ebx + 0xc]
mov eax, 0x1091070
lea esi, [esp + 0xcc]
mov dword [esp + 0xe0], 0xf
mov dword [esp + 0xdc], ebx
mov byte [esp + 0xcc], bl
call fcn.00403c60
mov byte [esp + 0x768], 4
mov edx, dword [esp + 0x6c]
xor eax, eax
mov ecx, 0x811c9dc5
cmp edx, ebx
jbe 0x401d9e
mov edi, dword [esp + 0x70]
nop
mov esi, dword [esp + 0x5c]
cmp edi, 0x10
jae 0x401d8d
lea esi, [esp + 0x5c]
movzx esi, byte [esi + eax]
xor ecx, esi
inc eax
imul ecx, ecx, 0x1000193
cmp eax, edx
jb 0x401d80
push 0x208
lea edx, [esp + 0x140]
push edx
push 0x10910ac
push ecx
lea eax, [esp + 0xdc]
call fcn.00401820
call eax
mov edi, 0x10
mov esi, eax
cmp dword [esp + 0xe0], edi
jb 0x401ddf
mov eax, dword [esp + 0xcc]
push eax
call fcn.00405647
add esp, 4
mov byte [esp + 0x768], 2
mov dword [esp + 0xe0], 0xf
mov dword [esp + 0xdc], ebx
mov byte [esp + 0xcc], bl
cmp dword [esp + 0x70], edi
jb 0x401e13
mov ecx, dword [esp + 0x5c]
push ecx
call fcn.00405647
add esp, 4
cmp esi, ebx
jg 0x401ea1
mov esi, 8
cmp dword [esp + 0xfc], esi
jb 0x401e39
mov edx, dword [esp + 0xe8]
push edx
call fcn.00405647
add esp, 4
xor eax, eax
mov edi, 7
mov dword [esp + 0xfc], edi
mov dword [esp + 0xf8], ebx
mov word [esp + 0xe8], ax
cmp dword [esp + 0xc4], esi
jb 0x401e6f
mov ecx, dword [esp + 0xb0]
push ecx
call fcn.00405647
add esp, 4
xor edx, edx
mov dword [esp + 0xc4], edi
mov dword [esp + 0xc0], ebx
mov word [esp + 0xb0], dx
cmp dword [esp + 0xa8], esi
jb 0x402911
mov eax, dword [esp + 0x94]
push eax
jmp 0x402909
lea eax, [esp + 0x13c]
lea edx, [eax + 2]
jmp 0x401eb0
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x401eb0
sub eax, edx
sar eax, 1
push eax
lea eax, [esp + 0x140]
lea esi, [esp + 0x98]
call fcn.00403e60
mov ecx, esi
push ecx
mov ecx, dword [esp + 0xa8]
mov edi, 1
call fcn.004036d0
push eax
lea esi, [esp + 0x7c]
lea edx, [esp + 0x98]
call fcn.00403250
mov edi, eax
lea esi, [esp + 0x94]
mov byte [esp + 0x768], 5
call fcn.004034c0
mov byte [esp + 0x768], 2
cmp dword [esp + 0x8c], 8
jb 0x401f2d
mov edx, dword [esp + 0x78]
push edx
call fcn.00405647
add esp, 4
push 0x10910c8
lea eax, [esp + 0x98]
push eax
lea ecx, [esp + 0x80]
push ecx
call fcn.00404ad0
add esp, 0xc
mov edi, eax
lea esi, [esp + 0x94]
mov byte [esp + 0x768], 6
call fcn.004034c0
mov byte [esp + 0x768], 2
cmp dword [esp + 0x8c], 8
jb 0x401f7f
mov edx, dword [esp + 0x78]
push edx
call fcn.00405647
add esp, 4
push ebx
lea eax, [esp + 0x98]
push eax
or eax, 0xffffffff
lea ecx, [esp + 0xb8]
call fcn.004035d0
mov eax, 7
xor ecx, ecx
mov dword [esp + 0x118], eax
mov dword [esp + 0x114], ebx
mov word [esp + 0x104], cx
xor edx, edx
mov dword [esp + 0x134], eax
mov dword [esp + 0x130], ebx
mov word [esp + 0x120], dx
lea eax, [esp + 0x104]
push eax
lea ecx, [esp + 0x124]
mov byte [esp + 0x76c], 8
call fcn.00401a00
add esp, 4
push ebx
lea ecx, [esp + 0x108]
push ecx
or eax, 0xffffffff
lea ecx, [esp + 0xf0]
call fcn.004035d0
mov edi, 0x14
mov eax, 0x10910d8
lea esi, [esp + 0xcc]
mov dword [esp + 0xe0], 0xf
mov dword [esp + 0xdc], ebx
mov byte [esp + 0xcc], bl
call fcn.00403c60
mov byte [esp + 0x768], 9
mov edi, 0xc
mov eax, 0x1091070
lea esi, [esp + 0x5c]
mov dword [esp + 0x70], 0xf
mov dword [esp + 0x6c], ebx
mov byte [esp + 0x5c], bl
call fcn.00403c60
mov byte [esp + 0x768], 0xa
mov esi, dword [esp + 0xdc]
xor eax, eax
mov ecx, 0x811c9dc5
cmp esi, ebx
jbe 0x4020a6
mov edi, dword [esp + 0xe0]
mov edi, edi
mov edx, dword [esp + 0xcc]
cmp edi, 0x10
jae 0x402093
lea edx, [esp + 0xcc]
movzx edx, byte [edx + eax]
xor edx, ecx
imul edx, edx, 0x1000193
inc eax
mov ecx, edx
cmp eax, esi
jb 0x402080
lea eax, [esp + 0x344]
push eax
push 0x208
push ecx
lea eax, [esp + 0x68]
call fcn.00401820
call eax
mov edi, 0x10
mov esi, eax
cmp dword [esp + 0x70], edi
jb 0x4020d9
mov ecx, dword [esp + 0x5c]
push ecx
call fcn.00405647
add esp, 4
mov byte [esp + 0x768], 8
mov dword [esp + 0x70], 0xf
mov dword [esp + 0x6c], ebx
mov byte [esp + 0x5c], bl
cmp dword [esp + 0xe0], edi
jb 0x40210a
mov edx, dword [esp + 0xcc]
push edx
call fcn.00405647
add esp, 4
cmp esi, ebx
jne 0x4021fa
mov esi, 8
cmp dword [esp + 0x134], esi
jb 0x402130
mov eax, dword [esp + 0x120]
push eax
call fcn.00405647
add esp, 4
xor ecx, ecx
mov edi, 7
mov dword [esp + 0x134], edi
mov dword [esp + 0x130], ebx
mov word [esp + 0x120], cx
cmp dword [esp + 0x118], esi
jb 0x402166
mov edx, dword [esp + 0x104]
push edx
call fcn.00405647
add esp, 4
xor eax, eax
mov dword [esp + 0x118], edi
mov dword [esp + 0x114], ebx
mov word [esp + 0x104], ax
cmp dword [esp + 0xfc], esi
jb 0x402197
mov ecx, dword [esp + 0xe8]
push ecx
call fcn.00405647
add esp, 4
xor edx, edx
mov dword [esp + 0xfc], edi
mov dword [esp + 0xf8], ebx
mov word [esp + 0xe8], dx
cmp dword [esp + 0xc4], esi
jb 0x4021c8
mov eax, dword [esp + 0xb0]
push eax
call fcn.00405647
add esp, 4
xor ecx, ecx
mov dword [esp + 0xc4], edi
mov dword [esp + 0xc0], ebx
mov word [esp + 0xb0], cx
cmp dword [esp + 0xa8], esi
jb 0x402911
mov edx, dword [esp + 0x94]
push edx
jmp 0x402909
mov ecx, dword [esp + 0x94]
mov edi, 8
cmp dword [esp + 0xa8], edi
jae 0x402216
lea ecx, [esp + 0x94]
lea eax, [esp + 0x344]
lea ecx, [ecx]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x402246
cmp dx, bx
je 0x402242
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x402246
add eax, 4
add ecx, 4
cmp dx, bx
jne 0x402220
xor eax, eax
jmp 0x40224b
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
je 0x40282f
mov edi, 0x12
mov eax, 0x1091080
lea esi, [esp + 0x78]
mov dword [esp + 0x8c], 0xf
mov dword [esp + 0x88], ebx
mov byte [esp + 0x78], bl
call fcn.00403c60
mov byte [esp + 0x768], 0xb
mov edi, 0xc
mov eax, 0x1091070
lea esi, [esp + 0x5c]
mov dword [esp + 0x70], 0xf
mov dword [esp + 0x6c], ebx
mov byte [esp + 0x5c], bl
call fcn.00403c60
push 0x208
lea eax, [esp + 0x550]
push eax
push ebx
lea edi, [esp + 0x84]
mov byte [esp + 0x774], 0xc
call fcn.004018c0
push eax
mov eax, esi
call fcn.00401820
call eax
cmp dword [esp + 0x70], 0x10
mov esi, eax
jb 0x4022e9
mov ecx, dword [esp + 0x5c]
push ecx
call fcn.00405647
add esp, 4
mov byte [esp + 0x768], 8
cmp dword [esp + 0x8c], 0x10
mov dword [esp + 0x70], 0xf
mov dword [esp + 0x6c], ebx
mov byte [esp + 0x5c], bl
jb 0x402318
mov edx, dword [esp + 0x78]
push edx
call fcn.00405647
add esp, 4
cmp esi, ebx
jne 0x402408
mov esi, 8
cmp dword [esp + 0x134], esi
jb 0x40233e
mov eax, dword [esp + 0x120]
push eax
call fcn.00405647
add esp, 4
xor ecx, ecx
mov edi, 7
mov dword [esp + 0x134], edi
mov dword [esp + 0x130], ebx
mov word [esp + 0x120], cx
cmp dword [esp + 0x118], esi
jb 0x402374
mov edx, dword [esp + 0x104]
push edx
call fcn.00405647
add esp, 4
xor eax, eax
mov dword [esp + 0x118], edi
mov dword [esp + 0x114], ebx
mov word [esp + 0x104], ax
cmp dword [esp + 0xfc], esi
jb 0x4023a5
mov ecx, dword [esp + 0xe8]
push ecx
call fcn.00405647
add esp, 4
xor edx, edx
mov dword [esp + 0xfc], edi
mov dword [esp + 0xf8], ebx
mov word [esp + 0xe8], dx
cmp dword [esp + 0xc4], esi
jb 0x4023d6
mov eax, dword [esp + 0xb0]
push eax
call fcn.00405647
add esp, 4
xor ecx, ecx
mov dword [esp + 0xc4], edi
mov dword [esp + 0xc0], ebx
mov word [esp + 0xb0], cx
cmp dword [esp + 0xa8], esi
jb 0x402911
mov edx, dword [esp + 0x94]
push edx
jmp 0x402909
push 1
mov eax, 0x10910c4
lea ecx, [esp + 0x98]
call fcn.00403d30
push ebx
mov eax, 0x10910f0
lea ecx, [esp + 0x98]
call fcn.00403d30
push 7
mov eax, 0x10910f4
lea ecx, [esp + 0x98]
call fcn.00403d30
mov eax, dword [esp + 0x94]
mov esi, 8
cmp dword [esp + 0xa8], esi
jae 0x40245c
lea eax, [esp + 0x94]
push ebx
push eax
lea eax, [esp + 0x554]
push eax
call dword [0x108f028]
push 0x1091104
lea ecx, [esp + 0xb4]
push ecx
lea edx, [esp + 0x64]
push edx
call fcn.00404ad0
add esp, 0xc
mov edi, eax
push 0x1091104
lea eax, [esp + 0xec]
push eax
lea ecx, [esp + 0x80]
push ecx
mov byte [esp + 0x774], 0xd
call fcn.00404ad0
add esp, 0xc
cmp dword [edi + 0x14], esi
jb 0x4024b4
mov edi, dword [edi]
cmp dword [eax + 0x14], esi
jb 0x4024bb
mov eax, dword [eax]
push ebx
push edi
push eax
call dword [0x108f028]
cmp dword [esp + 0x8c], esi
jb 0x4024da
mov edx, dword [esp + 0x78]
push edx
call fcn.00405647
add esp, 4
xor eax, eax
mov byte [esp + 0x768], 8
mov dword [esp + 0x8c], 7
mov dword [esp + 0x88], ebx
mov word [esp + 0x78], ax
cmp dword [esp + 0x70], esi
jb 0x40250e
mov ecx, dword [esp + 0x5c]
push ecx
call fcn.00405647
add esp, 4
push 0x109111c
lea edx, [esp + 0xb4]
push edx
lea eax, [esp + 0x64]
push eax
call fcn.00404ad0
add esp, 0xc
mov edi, eax
push 0x109111c
lea ecx, [esp + 0xec]
push ecx
lea edx, [esp + 0x80]
push edx
mov byte [esp + 0x774], 0xe
call fcn.00404ad0
add esp, 0xc
cmp dword [edi + 0x14], esi
jb 0x402556
mov edi, dword [edi]
cmp dword [eax + 0x14], esi
jb 0x40255d
mov eax, dword [eax]
push ebx
push edi
push eax
call dword [0x108f028]
cmp dword [esp + 0x8c], esi
jb 0x40257c
mov eax, dword [esp + 0x78]
push eax
call fcn.00405647
add esp, 4
xor ecx, ecx
mov byte [esp + 0x768], 8
mov dword [esp + 0x8c], 7
mov dword [esp + 0x88], ebx
mov word [esp + 0x78], cx
cmp dword [esp + 0x70], esi
jb 0x4025b0
mov edx, dword [esp + 0x5c]
push edx
call fcn.00405647
add esp, 4
push 0x44
lea eax, [esp + 0x18]
push ebx
push eax
call fcn.00409340
add esp, 0xc
mov eax, 0x1091130
lea ecx, [esp + 0x5c]
mov dword [esp + 0x14], 0x44
mov dword [esp + 0xcc], ebx
mov dword [esp + 0xd0], ebx
mov dword [esp + 0xd4], ebx
mov dword [esp + 0xd8], ebx
call fcn.004031e0
mov eax, 0x1091070
lea ecx, [esp + 0x78]
mov byte [esp + 0x768], 0xf
call fcn.004031e0
mov byte [esp + 0x768], 0x10
mov ecx, dword [esp + 0xb0]
cmp dword [esp + 0xc4], esi
jae 0x402627
lea ecx, [esp + 0xb0]
mov eax, dword [esp + 0x94]
cmp dword [esp + 0xa8], esi
jae 0x40263e
lea eax, [esp + 0x94]
lea edx, [esp + 0xcc]
push edx
lea edx, [esp + 0x18]
push edx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ecx
push eax
lea edi, [esp + 0x84]
call fcn.004018c0
push eax
lea eax, [esp + 0xa4]
call fcn.00401820
call eax
mov edi, 0x10
mov esi, eax
cmp dword [esp + 0x8c], edi
jb 0x40268b
mov eax, dword [esp + 0x78]
push eax
call fcn.00405647
add esp, 4
mov byte [esp + 0x768], 8
mov dword [esp + 0x8c], 0xf
mov dword [esp + 0x88], ebx
mov byte [esp + 0x78], bl
cmp dword [esp + 0x70], edi
jb 0x4026bc
mov ecx, dword [esp + 0x5c]
push ecx
call fcn.00405647
add esp, 4
cmp esi, ebx
je 0x402701
lea esi, [esp + 0x120]
call fcn.00403220
lea esi, [esp + 0x104]
call fcn.00403220
lea esi, [esp + 0xe8]
call fcn.00403220
lea esi, [esp + 0xb0]
call fcn.00403220
lea esi, [esp + 0x94]
call fcn.00403220
jmp 0x402911
mov eax, 0x1091140
lea ecx, [esp + 0x5c]
call fcn.004031e0
mov eax, 0x1091070
lea ecx, [esp + 0x78]
mov byte [esp + 0x768], 0x11
call fcn.004031e0
mov byte [esp + 0x768], 0x12
mov edx, dword [esp + 0xcc]
push 0xbb8
push edx
lea edi, [esp + 0x64]
call fcn.004018c0
push eax
lea eax, [esp + 0x84]
call fcn.00401820
call eax
lea esi, [esp + 0x78]
call fcn.00403420
mov esi, edi
mov byte [esp + 0x768], 8
call fcn.00403420
mov eax, 0x1091154
lea ecx, [esp + 0x5c]
call fcn.004031e0
mov eax, 0x1091070
lea ecx, [esp + 0x78]
mov byte [esp + 0x768], 0x13
call fcn.004031e0
mov byte [esp + 0x768], 0x14
mov eax, dword [esp + 0xcc]
push eax
lea edi, [esp + 0x60]
call fcn.004018c0
push eax
lea eax, [esp + 0x80]
call fcn.00401820
call eax
lea esi, [esp + 0x78]
call fcn.00403420
mov esi, edi
mov byte [esp + 0x768], 8
call fcn.00403420
mov eax, 0x1091154
lea ecx, [esp + 0x5c]
call fcn.004031e0
mov eax, 0x1091070
lea ecx, [esp + 0x78]
mov byte [esp + 0x768], 0x15
call fcn.004031e0
mov byte [esp + 0x768], 0x16
mov ecx, dword [esp + 0xd0]
push ecx
lea edi, [esp + 0x60]
call fcn.004018c0
push eax
lea eax, [esp + 0x80]
call fcn.00401820
call eax
lea esi, [esp + 0x78]
call fcn.00403420
mov esi, edi
call fcn.00403420
mov edi, 8
cmp dword [esp + 0x134], edi
jb 0x402848
mov edx, dword [esp + 0x120]
push edx
call fcn.00405647
add esp, 4
xor eax, eax
mov esi, 7
mov dword [esp + 0x134], esi
mov dword [esp + 0x130], ebx
mov word [esp + 0x120], ax
cmp dword [esp + 0x118], edi
jb 0x40287e
mov ecx, dword [esp + 0x104]
push ecx
call fcn.00405647
add esp, 4
xor edx, edx
mov dword [esp + 0x118], esi
mov dword [esp + 0x114], ebx
mov word [esp + 0x104], dx
cmp dword [esp + 0xfc], edi
jb 0x4028af
mov eax, dword [esp + 0xe8]
push eax
call fcn.00405647
add esp, 4
xor ecx, ecx
mov dword [esp + 0xfc], esi
mov dword [esp + 0xf8], ebx
mov word [esp + 0xe8], cx
cmp dword [esp + 0xc4], edi
jb 0x4028e0
mov edx, dword [esp + 0xb0]
push edx
call fcn.00405647
add esp, 4
xor eax, eax
mov dword [esp + 0xc4], esi
mov dword [esp + 0xc0], ebx
mov word [esp + 0xb0], ax
cmp dword [esp + 0xa8], edi
jb 0x402911
mov ecx, dword [esp + 0x94]
push ecx
call fcn.00405647
add esp, 4
mov ecx, dword [esp + 0x760]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x748]
xor ecx, esp
call fcn.004054ef
mov esp, ebp
pop ebp
ret