Function at 0x447070
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x84
mov eax, dword [0x4b000c]
xor eax, esp
mov dword [esp + 0x80], eax
push ebx
mov bh, 1
mov byte [esp + 0x12], 0
push esi
mov bl, bh
push edi
mov byte [esp + 0x13], bl
mov al, bh
mov esi, 0x10
dec al
movzx edx, al
imul ecx, edx, 0xe8
mov eax, dword [ecx + 0x4d13f4]
lea edi, [ecx + 0x4d13e8]
and eax, 0xffffffe6
or eax, 6
mov dword [ecx + 0x4d13f4], eax
test edi, edi
je 0x447543
mov eax, dword [edi + 0xc]
and edx, 0xf
and eax, 0xfffffc1f
shl edx, 5
or edx, eax
mov ecx, edi
mov dword [edi + 0xc], edx
mov eax, dword [edi]
call dword [eax + 0x28]
shl eax, 0xa
inc bh
xor eax, dword [edi + 0xc]
mov bl, bh
and eax, 0x400
xor dword [edi + 0xc], eax
mov eax, dword [str.XINPUT]
mov dword [edi + 0x10], eax
mov ax, word [0x4a5e24]
mov word [edi + 0x14], ax
movzx eax, byte [0x4a5e26]
mov byte [edi + 0x16], al
mov al, byte [esp + 0x1a]
movzx edx, al
lea esi, [edx*4 + 0x6eb750]
mov dword [edi + 4], 0xa
test dword [edi + 0xc], 0x400
mov dword [esp + 0x14], edx
mov dword [esp + 0x40], esi
mov dword [esi], edi
jne 0x44722a
xor al, al
mov dword [esp + 0x20], edx
mov byte [esp + 0x1b], al
mov ecx, esi
cmp bl, 4
jae 0x44733d
mov dword [esp + 0x20], edx
mov dword [esp + 0x1c], esi
nop dword [eax]
test al, al
jne 0x447218
mov al, bh
dec al
movzx edx, al
imul ecx, edx, 0xe8
mov eax, dword [ecx + 0x4d13f4]
lea esi, [ecx + 0x4d13e8]
and eax, 0xffffffe6
or eax, 6
mov dword [ecx + 0x4d13f4], eax
test esi, esi
je 0x4471f9
mov eax, dword [esi + 0xc]
and edx, 0xf
and eax, 0xfffffc1f
shl edx, 5
or edx, eax
mov ecx, esi
mov dword [esi + 0xc], edx
mov eax, dword [esi]
call dword [eax + 0x28]
mov ecx, dword [esp + 0x1c]
mov edi, esi
shl eax, 0xa
xor eax, dword [esi + 0xc]
and eax, 0x400
xor dword [esi + 0xc], eax
mov eax, dword [str.XINPUT]
mov dword [esi + 0x10], eax
mov ax, word [0x4a5e24]
mov word [esi + 0x14], ax
mov al, byte [0x4a5e26]
mov byte [esi + 0x16], al
mov eax, dword [esp + 0x40]
mov dword [esi + 4], 0xa
test dword [esi + 0xc], 0x400
mov dword [eax], esi
je 0x447201
mov al, 1
inc bh
mov byte [esp + 0x1b], al
jmp 0x447205
mov ecx, dword [esp + 0x1c]
mov edi, esi
mov dword [ecx], esi
mov al, byte [esp + 0x1b]
inc bl
cmp bl, 4
jb 0x447160
test al, al
je 0x447339
mov eax, dword [esp + 0x20]
mov esi, eax
mov dword [esp + 0x14], eax
test edi, edi
je 0x447345
mov bl, byte [esp + 0x13]
mov dl, byte [esp + 0x1a]
inc dl
mov byte [esp + 0x1a], dl
cmp dl, 2
jb 0x44709a
xor bl, bl
movzx edi, bl
mov esi, dword [edi*4 + 0x6eb750]
mov ecx, esi
cmp dword [esi + 4], 1
mov eax, dword [esi]
je 0x4472b5
call dword [eax]
lea eax, [ebx + 2]
movzx ecx, al
imul esi, ecx, 0xf0
add esi, 0x4d1788
mov dword [edi*4 + 0x6eb758], esi
je 0x447729
mov eax, dword [esi + 0xc]
and ecx, 0xf
movq xmm0, qword [str.GLFW_Keyboard]
and eax, 0xfffffc1f
shl ecx, 5
or ecx, eax
movq qword [esi + 0x10], xmm0
mov eax, dword [0x4a5e18]
mov dword [esi + 0x18], eax
mov ax, word [0x4a5e1c]
mov dword [esi + 0xc], ecx
mov ecx, esi
mov word [esi + 0x1c], ax
mov dword [esi + 4], 1
mov eax, dword [esi]
call dword [eax]
mov eax, dword [esi]
mov ecx, esi
push 0
mov eax, dword [eax + 8]
test bl, bl
jne 0x447740
push 0x11e
call eax
mov eax, dword [esi]
mov ecx, esi
push 1
push 0x11d
call dword [eax + 8]
mov eax, dword [esi]
mov ecx, esi
push 2
push 0x11b
call dword [eax + 8]
mov eax, dword [esi]
mov ecx, esi
push 3
push 0x11c
call dword [eax + 8]
mov eax, dword [esi]
mov ecx, esi
push 6
push 0x41
call dword [eax + 8]
mov eax, dword [esi]
mov ecx, esi
push 7
push 0x5a
call dword [eax + 8]
mov eax, dword [esi]
mov ecx, esi
push 8
push 0x51
call dword [eax + 8]
mov eax, dword [esi]
mov ecx, esi
push 9
push 0x53
call dword [eax + 8]
mov eax, dword [esi]
mov ecx, esi
push 0xa
push 0x44
call dword [eax + 8]
push 0xb
push 0x42
jmp 0x4477ac
mov edx, dword [esp + 0x14]
mov dword [ecx], 0
mov esi, edx
mov bl, byte [esp + 0x13]
lea eax, [ebx - 1]
movzx eax, al
imul ecx, eax, 0xe8
mov dword [esp + 0x1c], eax
mov dword [esp + 0x44], ecx
mov eax, dword [ecx + 0x79396c]
and eax, 0xfffffff4
or eax, 0x14
mov dword [ecx + 0x79396c], eax
call fcn.0040d0d0
mov edi, eax
test edi, edi
jne 0x447387
mov ecx, dword [esp + 0x14]
lea eax, [esi*4 + 0x6eb750]
jmp 0x4473d4
mov esi, dword [0x7a4010]
cmp edi, 0x10
mov eax, 0x10
cmovg edi, eax
xor edx, edx
mov eax, dword [esi]
cmp eax, esi
je 0x4473b2
cmp edx, edi
jge 0x4473b2
mov ecx, dword [eax + 8]
mov eax, dword [eax]
mov dword [esp + edx*4 + 0x48], ecx
inc edx
cmp eax, esi
jne 0x4473a0
xor eax, eax
test edi, edi
jle case.0x4474d3.1
mov ecx, dword [esp + 0x1c]
nop dword [eax]
cmp eax, ecx
je 0x447438
inc eax
cmp eax, edi
jl 0x4473c0
mov ecx, dword [esp + 0x14]
lea eax, [ecx*4 + 0x6eb750]
mov dword [eax], 0
imul ecx, ecx, 0xf0
mov esi, eax
mov dword [eax], 0
add ecx, 0x4d1788
je 0x447727
mov edx, dword [esp + 0x20]
mov eax, dword [ecx + 0xc]
and edx, 0xf
movq xmm0, qword [str.GLFW_Keyboard]
and eax, 0xfffffc1f
shl edx, 5
or edx, eax
movq qword [ecx + 0x10], xmm0
mov eax, dword [0x4a5e18]
mov dword [ecx + 0x18], eax
mov ax, word [0x4a5e1c]
mov dword [ecx + 0xc], edx
mov word [ecx + 0x1c], ax
mov dword [ecx + 4], 1
mov dword [esi], ecx
jmp 0x44722e
mov edx, dword [esp + eax*4 + 0x48]
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [esp + 0x24], edx
imul ecx, eax, 0x1000193
mov eax, edx
shr eax, 8
movzx eax, al
mov dword [esp + 0x40], edx
xor ecx, eax
mov eax, edx
shr eax, 0x10
imul ecx, ecx, 0x1000193
movzx eax, al
xor ecx, eax
mov eax, edx
imul ecx, ecx, 0x1000193
shr eax, 0x18
xor ecx, eax
imul eax, ecx, 0x1000193
push eax
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x40]
push eax
call fcn.0040e590
mov ecx, dword [eax + 4]
test ecx, ecx
je case.0x4474d3.1
cmp ecx, esi
je case.0x4474d3.1
mov ecx, dword [ecx + 0xc]
test ecx, ecx
je case.0x4474d3.1
mov eax, dword [ecx + 0x1bc]
sub eax, 0
je 0x4474c6
sub eax, 1
je case.0x4474d3.4
sub eax, 1
je case.0x4474d3.1
mov eax, dword [ecx + 0x28]
dec eax
cmp eax, 3
ja case.0x4474d3.1
jmp dword [eax*4 + 0x447908]
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x24]
lea edx, [ecx + 0x793960]
mov dword [ecx + 0x793a44], eax
test edx, edx
je 0x447531
mov ecx, dword [esp + 0x1c]
mov eax, dword [edx + 0xc]
and ecx, 0xf
movups xmm0, xmmword [str.JoyShock_Device]
and eax, 0xfffffc1f
shl ecx, 5
or ecx, eax
mov eax, dword [esp + 0x14]
inc bl
mov dword [edx + 0xc], ecx
movups xmmword [edx + 0x10], xmm0
mov dword [edx + 4], 0xf
mov dword [eax*4 + 0x6eb750], edx
mov byte [esp + 0x13], bl
jmp 0x44722e
mov ecx, dword [esp + 0x14]
lea eax, [ecx*4 + 0x6eb750]
mov dword [eax], edx
jmp 0x4473da
movzx eax, byte [esp + 0x1a]
inc bh
mov dword [esp + 0x1c], eax
lea eax, [eax*4 + 0x6eb750]
mov dword [esp + 0x14], eax
mov dword [eax], 0
lea eax, [ebx - 1]
movzx eax, al
imul ecx, eax, 0xe8
mov dword [esp + 0x20], eax
mov dword [esp + 0x40], ecx
mov eax, dword [ecx + 0x79396c]
and eax, 0xfffffff4
or eax, 0x14
mov dword [ecx + 0x79396c], eax
call fcn.0040d0d0
mov edi, eax
test edi, edi
je case.0x4476ca.1
cmp edi, 0x10
cmovg edi, esi
mov esi, dword [0x7a4010]
xor edx, edx
mov eax, dword [esi]
cmp eax, esi
je 0x4475b6
cmp edx, edi
jge 0x4475b6
mov ecx, dword [eax + 8]
mov eax, dword [eax]
mov dword [esp + edx*4 + 0x48], ecx
inc edx
cmp eax, esi
jne 0x4475a4
xor eax, eax
test edi, edi
jle case.0x4476ca.1
mov ecx, dword [esp + 0x20]
cmp eax, ecx
je 0x44762f
inc eax
cmp eax, edi
jl 0x4475c0
mov edx, dword [esp + 0x14]
mov dword [edx], 0
mov edi, dword [esp + 0x1c]
imul ecx, edi, 0xf0
mov dword [edx], 0
add ecx, 0x4d1788
mov dword [edx], ecx
je 0x447729
mov eax, dword [ecx + 0xc]
and edi, 0xf
movq xmm0, qword [str.GLFW_Keyboard]
and eax, 0xfffffc1f
shl edi, 5
or edi, eax
movq qword [ecx + 0x10], xmm0
mov eax, dword [0x4a5e18]
mov dword [ecx + 0x18], eax
mov ax, word [0x4a5e1c]
mov dword [ecx + 0xc], edi
mov word [ecx + 0x1c], ax
mov dword [ecx + 4], 1
jmp 0x44722e
mov edx, dword [esp + eax*4 + 0x48]
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [esp + 0x24], edx
imul ecx, eax, 0x1000193
mov eax, edx
shr eax, 8
movzx eax, al
mov dword [esp + 0x44], edx
xor ecx, eax
mov eax, edx
shr eax, 0x10
imul ecx, ecx, 0x1000193
movzx eax, al
xor ecx, eax
mov eax, edx
imul ecx, ecx, 0x1000193
shr eax, 0x18
xor ecx, eax
imul eax, ecx, 0x1000193
push eax
lea eax, [esp + 0x48]
push eax
lea eax, [esp + 0x38]
push eax
call fcn.0040e590
mov ecx, dword [eax + 4]
test ecx, ecx
je case.0x4476ca.1
cmp ecx, esi
je case.0x4476ca.1
mov ecx, dword [ecx + 0xc]
test ecx, ecx
je case.0x4476ca.1
mov eax, dword [ecx + 0x1bc]
sub eax, 0
je 0x4476bd
sub eax, 1
je case.0x4476ca.4
sub eax, 1
je case.0x4476ca.1
mov eax, dword [ecx + 0x28]
dec eax
cmp eax, 3
ja case.0x4476ca.1
jmp dword [eax*4 + 0x447918]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
lea esi, [ecx + 0x793960]
mov dword [ecx + 0x793a44], eax
mov dword [edx], esi
test esi, esi
je 0x4475d3
mov ecx, dword [esp + 0x20]
mov eax, dword [esi + 0xc]
and ecx, 0xf
movups xmm0, xmmword [str.JoyShock_Device]
shl ecx, 5
and eax, 0xfffffc1f
or ecx, eax
inc bl
mov dword [esi + 0xc], ecx
movups xmmword [esi + 0x10], xmm0
mov dword [esi + 4], 0xf
mov byte [esp + 0x13], bl
jmp 0x44722e
mov dword [eax], ecx
xor al, al
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x80]
xor ecx, esp
call fcn.0046ad4d
mov esp, ebp
pop ebp
ret
push 0x134
call eax
mov eax, dword [esi]
mov ecx, esi
push 1
push 0x132
call dword [eax + 8]
mov eax, dword [esi]
mov ecx, esi
push 2
push 0x136
call dword [eax + 8]
mov eax, dword [esi]
mov ecx, esi
push 3
push 0x130
call dword [eax + 8]
mov eax, dword [esi]
mov ecx, esi
push 6
push 0x49
call dword [eax + 8]
mov eax, dword [esi]
mov ecx, esi
push 7
push 0x4f
call dword [eax + 8]
mov eax, dword [esi]
mov ecx, esi
push 8
push 0x4b
call dword [eax + 8]
mov eax, dword [esi]
mov ecx, esi
push 9
push 0x4c
call dword [eax + 8]
mov eax, dword [esi]
mov ecx, esi
push 0xa
push 0x4d
call dword [eax + 8]
push 0xb
push 0x4e
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 8]
inc bl
cmp bl, 2
jb 0x447243
mov esi, 0x6eb698
mov edi, 4
push 0x32
lea eax, [esi - 0x10]
push 0
push eax
call fcn.0046e200
add esp, 0xc
mov dword [esi], 0xffffffff
mov dword [esi + 8], 0xffffffff
lea esi, [esi + 0x32]
mov dword [esi - 0x22], 0xffffffff
sub edi, 1
jne 0x4477c8
mov eax, 0x8760a4
mov dword [esp + 0x44], 0x100
lea ecx, [edi + 2]
mov dword [esp + 0x24], 0x80
mov dword [esp + 0x40], 0x40
mov dword [esp + 0x20], 0x200
mov dword [esp + 0x1c], 0x400
mov dword [esp + 0x14], 0x800
mov dword [esp + 0x28], 0x1000
mov dword [esp + 0x2c], 0x2000
mov dword [esp + 0x30], 0x4000
mov dword [esp + 0x38], 0x8000
nop dword [eax]
mov edx, dword [esp + 0x44]
lea eax, [eax + 0x20]
mov word [eax - 0x1c], dx
mov edx, dword [esp + 0x24]
mov word [eax - 0x1a], dx
mov edx, dword [esp + 0x40]
mov word [eax - 0x18], dx
mov edx, dword [esp + 0x20]
mov word [eax - 0x16], dx
mov edx, dword [esp + 0x1c]
mov word [eax - 0x14], dx
mov edx, dword [esp + 0x14]
mov word [eax - 0x12], dx
mov edx, dword [esp + 0x28]
mov word [eax - 0x10], dx
mov edx, dword [esp + 0x2c]
mov word [eax - 0xe], dx
mov edx, dword [esp + 0x30]
mov word [eax - 0xc], dx
mov edx, dword [esp + 0x38]
mov word [eax - 0xa], dx
xor edx, edx
mov dword [eax - 0x20], 0x10002
mov dword [eax - 0x24], 0x80004
mov dword [eax - 8], edx
sub ecx, 1
jne 0x447850
xor edi, edi
lea ebx, [ecx + 2]
mov edx, 0x6eb760
mov ecx, edi
mov esi, 0xc
and ecx, 1
shl ecx, 5
add ecx, 0x8760a8
movzx eax, word [ecx]
lea ecx, [ecx + 2]
mov dword [edx], eax
add edx, 4
sub esi, 1
jne 0x4478d8
inc edi
sub ebx, 1
jne 0x4478c5
mov ecx, dword [esp + 0x8c]
mov al, 1
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0046ad4d
mov esp, ebp
pop ebp
ret