Function at 0x409382
Capabilities:
Access peb ldr_data
Encode data using xor
Hash data using fnv
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x52c
mov eax, dword [0x4e2040]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov dword [ebp - 0x4a8], edx
mov dword [ebp - 0x450], ecx
call fcn.00409b94
mov esi, eax
xor ebx, ebx
cmp byte [esi + 0x4d], bl
je 0x4093cc
push 0x7dbd4949
push 0x9df19131
push ebx
push 0x4d
mov ecx, esi
call fcn.00407ee8
add esp, 0x10
mov byte [esi + 0x4d], bl
mov dword [ebp - 0x504], esi
call fcn.00409c39
mov esi, eax
cmp byte [esi + 0x2d], bl
je 0x4093f8
push 0xcb0b4fdb
push 0x6b4b3b87
push ebx
push 0x2d
mov ecx, esi
call fcn.00407ee8
add esp, 0x10
mov byte [esi + 0x2d], bl
mov eax, dword fs:[0x2c]
movaps xmm0, xmmword [0x4d8840]
movups xmmword [ebp - 0x49c], xmm0
push 0x2b
mov ebx, dword [eax]
movaps xmm0, xmmword [0x4d8940]
mov dword [ebp - 0x500], esi
movups xmmword [ebp - 0x48c], xmm0
mov eax, dword [ebx + 0x384]
lea esi, [ebx + 0x2b0]
mov dword [ebp - 0x47c], 0x642e2772
mov dword [ebp - 0x478], 0xf77e5dc1
mov word [ebp - 0x474], 0x387e
mov byte [ebp - 0x472], 0x4b
mov dword [ebp - 0x4ac], ebx
pop edi
test al, 1
jne 0x4094a6
xorps xmm0, xmm0
mov byte [esi + 0x2b], 1
or eax, 1
movlpd qword [ebp - 0x410], xmm0
mov edx, dword [ebp - 0x40c]
mov ecx, dword [ebp - 0x410]
mov dword [ebx + 0x384], eax
mov al, byte [ebp + ecx - 0x49c]
mov byte [esi + ecx], al
add ecx, 1
adc edx, 0
test edx, edx
jne 0x40949b
cmp ecx, edi
jb 0x409483
push 0x4bf0c4
call fcn.004b0dd6
pop ecx
cmp byte [esi + 0x2b], 0
je 0x4094c7
push 0x991135b1
push 0x3b4b4b1b
push 0
push edi
mov ecx, esi
call fcn.00407ee8
add esp, 0x10
mov byte [esi + 0x2b], 0
movaps xmm0, xmmword [0x4d8640]
mov eax, dword [ebx + 0x3c4]
mov dword [ebp - 0x4fc], esi
mov dword [ebp - 0x47c], 0xeabe0c6f
mov dword [ebp - 0x478], 0x45da1288
mov word [ebp - 0x474], 0x4970
mov byte [ebp - 0x472], 0xe1
movups xmmword [ebp - 0x49c], xmm0
movaps xmm0, xmmword [0x4d85b0]
movups xmmword [ebp - 0x48c], xmm0
test al, 1
jne 0x409565
xorps xmm0, xmm0
mov byte [ebx + 0x6ab], 1
or eax, 1
movlpd qword [ebp - 0x410], xmm0
mov edx, dword [ebp - 0x40c]
mov ecx, dword [ebp - 0x410]
mov dword [ebx + 0x3c4], eax
mov al, byte [ebp + ecx - 0x49c]
mov byte [ebx + ecx + 0x680], al
add ecx, 1
adc edx, 0
test edx, edx
jne 0x40955a
cmp ecx, edi
jb 0x40953e
push 0x4bf0b1
call fcn.004b0dd6
pop ecx
lea esi, [ebx + 0x680]
cmp byte [esi + 0x2b], 0
je 0x40958c
push 0x29b373e5
push 0x8fe16903
push 0
push edi
mov ecx, esi
call fcn.00407ee8
add esp, 0x10
mov byte [esi + 0x2b], 0
mov dword [ebp - 0x4f8], esi
call fcn.00409cc8
mov esi, eax
cmp byte [esi + 0x20], 0
je 0x4095bb
push 0xeb995df1
push 0xff715fd1
push 0
push 0x10
mov ecx, esi
call fcn.00407f3c
add esp, 0x10
mov byte [esi + 0x20], 0
mov dword [ebp - 0x514], esi
call fcn.00409d80
mov esi, eax
cmp byte [esi + 0x18], 0
je 0x4095ea
push 0x8373ad4d
push 0xbdc90b71
push 0
push 0xc
mov ecx, esi
call fcn.00407f3c
add esp, 0x10
mov byte [esi + 0x18], 0
mov dword [ebp - 0x510], esi
call fcn.00409e1e
mov esi, eax
cmp byte [esi + 0x1c], 0
je 0x409619
push 0x9592b41
push 0xc54dfb37
push 0
push 0xe
mov ecx, esi
call fcn.00407f3c
add esp, 0x10
mov byte [esi + 0x1c], 0
mov dword [ebp - 0x50c], esi
call fcn.00409ee1
mov esi, eax
cmp byte [esi + 0x1a], 0
je 0x409648
push 0x8d8f017d
push 0x7d7f3d23
push 0
push 0xd
mov ecx, esi
call fcn.00407f3c
add esp, 0x10
mov byte [esi + 0x1a], 0
mov ecx, dword [ebp - 0x450]
xor eax, eax
mov edi, ecx
mov dword [ebp - 0x508], esi
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
xor eax, eax
and dword [ecx + 0x10], 0
xor esi, esi
mov dword [ecx + 0x14], 7
mov word [ecx], ax
mov dword [ebp - 0x45c], esi
push dword [ebp - 0x4a8]
xor eax, eax
lea edi, [ebp - 0x43c]
stosd dword es:[edi], eax
lea ecx, [ebp - 0x43c]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
call fcn.004abf06
cmp byte [ebp - 0x430], 0
je 0x409b64
push dword [ebp + esi*4 - 0x504]
lea eax, [ebp - 0x410]
xorps xmm0, xmm0
push eax
lea ecx, [ebp - 0x43c]
movlpd qword [ebp - 0x410], xmm0
call fcn.004ac725
cmp dword [ebp - 0x410], 0
je 0x409b59
push dword [ebp + esi*4 - 0x514]
mov ecx, dword [ebp - 0x450]
call fcn.0040c0fc
xor eax, eax
lea edi, [ebp - 0x44c]
stosd dword es:[edi], eax
lea ecx, [ebp - 0x410]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
lea eax, [ebp - 0x44c]
push eax
call fcn.00408ea3
or dword [ebp - 0x424], 0xffffffff
and dword [ebp - 0x420], 0
and dword [ebp - 0x41c], 0
mov dword [ebp - method.iterator_class_row_t_.virtual_0], vtable.row_it.0
mov eax, dword [ebp - 0x44c]
lea ecx, [ebp - 0x44c]
call dword [eax + 8]
test al, al
je 0x409b43
cmp dword [ebp - 0x448], 0xffffffff
je 0x409b43
lea eax, [ebp - 0x418]
push eax
mov eax, dword [ebp - 0x44c]
lea ecx, [ebp - 0x44c]
call dword [eax + 4]
test esi, esi
je 0x409877
push 0x40
pop eax
mov word [ebp - 0x4a4], ax
mov eax, dword [ebx + 0x530]
mov dword [ebp - 0x4a2], 0xf70085
test al, 1
jne 0x4097d0
xorps xmm0, xmm0
mov byte [ebx + 0x4fe], 1
movlpd qword [ebp - 0x470], xmm0
or eax, 1
mov edx, dword [ebp - 0x46c]
mov ecx, dword [ebp - 0x470]
mov dword [ebx + 0x530], eax
mov ax, word [ebp + ecx*2 - 0x4a4]
mov word [ebx + ecx*2 + 0x4f8], ax
add ecx, 1
adc edx, 0
test edx, edx
jne 0x4097c5
cmp ecx, 3
jb 0x4097a6
push 0x4bf052
call fcn.004b0dd6
pop ecx
lea esi, [ebx + 0x4f8]
cmp byte [esi + 6], 0
je 0x4097f8
push 0x55c91b17
push 0x95f78f4d
push 0
push 3
mov ecx, esi
call fcn.00407f3c
add esp, 0x10
mov byte [esi + 6], 0
lea eax, [ebp - 0x418]
push eax
lea ecx, [ebp - 0x4b8]
call fcn.0040be12
and dword [ebp - 0x4b0], 0
push 0
push dword [ebp - 0x4b8]
call fcn.0045d568
pop ecx
pop ecx
push eax
lea ecx, [ebp - 0x52c]
call fcn.0040c1e2
push esi
lea edx, [ebp - 0x52c]
lea ecx, [ebp - 0x48c]
call fcn.0040c732
pop ecx
mov ecx, dword [ebp - 0x450]
push eax
call fcn.0040c123
lea ecx, [ebp - 0x48c]
call fcn.0040c4e8
lea ecx, [ebp - 0x52c]
call fcn.0040c4e8
lea ecx, [ebp - 0x4b8]
call fcn.0040bde3
inc dword [0x4e5cb4]
jmp 0x409af7
mov esi, dword [0x4e5c20]
test esi, esi
jne 0x409970
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [ebp - 0x464], eax
mov dword [ebp - 0x458], ecx
mov edx, dword [ecx + 0x18]
mov eax, dword [edx + 0x3c]
mov eax, dword [eax + edx + 0x78]
add eax, edx
mov dword [ebp - 0x46c], eax
cmp eax, edx
je 0x40994c
mov esi, dword [eax + 0x18]
test esi, esi
je 0x40994c
mov eax, dword [eax + 0x20]
lea eax, [eax + esi*4]
add eax, edx
sub eax, 4
mov ecx, 0xd977a015
dec esi
mov dword [ebp - 0x454], ecx
mov dword [ebp - 0x460], eax
mov edi, dword [eax]
add edi, edx
mov cl, byte [edi]
inc edi
test cl, cl
je 0x409942
mov ebx, dword [ebp - 0x454]
movsx eax, cl
xor eax, ebx
imul ecx, eax, 0x1000193
mov eax, ecx
shr eax, 0x10
xor eax, ecx
imul ecx, eax, 0x1000193
mov eax, ecx
shr eax, 0x10
xor eax, ecx
mov cl, byte [edi]
imul ebx, eax, 0x1000193
inc edi
test cl, cl
jne 0x4098f4
mov dword [ebp - 0x454], ebx
cmp dword [ebp - 0x454], 0x4403f1f2
mov ebx, dword [ebp - 0x4ac]
je 0x409b23
mov eax, dword [ebp - 0x460]
test esi, esi
jne 0x4098ce
mov ecx, dword [ebp - 0x458]
mov eax, dword [ecx]
mov ecx, eax
mov dword [ebp - 0x458], eax
cmp eax, dword [ebp - 0x464]
je 0x409968
cmp dword [ecx + 0x18], 0
jne 0x4098a1
xor esi, esi
mov dword [0x4e5c20], esi
lea eax, [ebp - 0x418]
push eax
lea ecx, [ebp - 0x4f4]
call fcn.0040be12
push 4
pop eax
push eax
push dword [ebp - 0x4f4]
mov dword [ebp - 0x4ec], eax
call fcn.0045d568
pop ecx
pop ecx
mov dword [ebp - 0x46c], eax
lea ecx, [ebp - 0x4e8]
lea eax, [ebp - 0x418]
push eax
call fcn.0040be12
push 3
pop eax
push eax
push dword [ebp - 0x4e8]
mov dword [ebp - 0x4e0], eax
call fcn.0045d568
pop ecx
pop ecx
mov dword [ebp - 0x464], eax
lea ecx, [ebp - 0x4dc]
lea eax, [ebp - 0x418]
push eax
call fcn.0040be12
push 2
pop eax
push eax
push dword [ebp - 0x4dc]
mov dword [ebp - 0x4d4], eax
call fcn.0045d568
pop ecx
pop ecx
mov dword [ebp - 0x460], eax
lea ecx, [ebp - 0x4d0]
lea eax, [ebp - 0x418]
push eax
call fcn.0040be12
xor eax, eax
inc eax
push eax
push dword [ebp - 0x4d0]
mov dword [ebp - 0x4c8], eax
call fcn.0045d568
pop ecx
pop ecx
mov dword [ebp - 0x458], eax
lea ecx, [ebp - 0x4c4]
lea eax, [ebp - 0x418]
push eax
call fcn.0040be12
and dword [ebp - 0x4bc], 0
push 0
push dword [ebp - 0x4c4]
call fcn.0045d568
pop ecx
pop ecx
mov dword [ebp - 0x454], eax
call fcn.00409f92
mov edi, eax
cmp byte [edi + 0x7e], 0
je 0x409a83
push 0x6bdffbd1
push 0xbffb17b5
push 0
push 0x3f
mov ecx, edi
call fcn.00407f3c
add esp, 0x10
mov byte [edi + 0x7e], 0
push dword [ebp - 0x46c]
lea eax, [ebp - 0x408]
push dword [ebp - 0x464]
push dword [ebp - 0x460]
push dword [ebp - 0x458]
push dword [ebp - 0x454]
push edi
push eax
call esi
add esp, 0x1c
lea ecx, [ebp - 0x4c4]
call fcn.0040bde3
lea ecx, [ebp - 0x4d0]
call fcn.0040bde3
lea ecx, [ebp - 0x4dc]
call fcn.0040bde3
lea ecx, [ebp - 0x4e8]
call fcn.0040bde3
lea ecx, [ebp - 0x4f4]
call fcn.0040bde3
mov ecx, dword [ebp - 0x450]
lea eax, [ebp - 0x408]
push eax
call fcn.0040c0fc
lea ecx, [ebp - 0x418]
call fcn.0040bde3
mov eax, dword [ebp - 0x448]
mov esi, dword [ebp - 0x45c]
cmp eax, 0xffffffff
je 0x40971f
inc eax
mov dword [ebp - 0x448], eax
jmp 0x40971f
mov edi, dword [ebp - 0x46c]
mov eax, dword [edi + 0x24]
lea eax, [eax + esi*2]
movzx ecx, word [eax + edx]
mov eax, dword [edi + 0x1c]
lea eax, [eax + ecx*4]
mov esi, dword [eax + edx]
add esi, edx
jmp 0x40996a
lea ecx, [ebp - 0x420]
call fcn.0040bde3
lea ecx, [ebp - 0x444]
call fcn.0040bde3
lea ecx, [ebp - 0x410]
call fcn.0040bde3
lea ecx, [ebp - 0x43c]
call fcn.004ac70a
inc esi
mov dword [ebp - 0x45c], esi
cmp esi, 4
jb 0x409674
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x450]
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.004b0ce6
leave
ret