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

Disassembly:
push 0x514
mov eax, 0x49a555
call fcn.0046c7ed
xor ebx, ebx
mov esi, ebx
mov dword [ebp - 0x508], esi
mov eax, dword fs:[0x30]
mov dword [ebp - 0x520], 0x3e8
mov dword [ebp - 0x514], ebx
mov dword [ebp - 0x50c], esi
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [ebp - 0x510], eax
mov dword [ebp - 0x400], ecx
mov edx, dword [ecx + 0x18]
mov eax, dword [edx + 0x3c]
mov edi, dword [eax + edx + 0x78]
mov eax, dword [eax + edx + 0x7c]
add edi, edx
mov dword [ebp - 0x418], eax
cmp edi, edx
je 0x407310
mov esi, dword [edi + 0x18]
test esi, esi
je 0x407310
mov eax, dword [edi + 0x20]
lea eax, [eax + esi*4]
add eax, edx
sub eax, 4
dec esi
mov dword [ebp - 0x404], eax
mov ecx, dword [eax]
mov eax, 0xeed5ff97
add ecx, edx
mov dword [ebp - 0x508], eax
mov al, byte [ecx]
inc ecx
mov byte [ebp - 0x501], al
test al, al
mov eax, dword [ebp - 0x404]
je 0x40730c
mov al, byte [ebp - 0x501]
mov ebx, dword [ebp - 0x508]
movsx eax, al
xor eax, ebx
imul ebx, eax, 0x1000193
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4072dc
mov dword [ebp - 0x508], ebx
xor ebx, ebx
cmp dword [ebp - 0x508], 0xa854fa1e
je 0x40746e
mov eax, dword [ebp - 0x404]
test esi, esi
jne 0x4072a4
mov eax, dword [ebp - 0x400]
mov eax, dword [eax]
mov ecx, eax
mov dword [ebp - 0x400], eax
cmp eax, dword [ebp - 0x510]
je 0x407331
cmp dword [ecx + 0x18], ebx
jne 0x40727b
mov esi, ebx
movaps xmm0, xmmword [0x4b6a80]
xor eax, eax
inc eax
mov dword [ebp - 0x460], 0xb4bdb49b
movups xmmword [ebp - 0x470], xmm0
mov dword [ebp - 0x45c], 0xb9bdaba1
mov ecx, ebx
mov word [ebp - 0x458], 0xb8
mov dword [ebp - 0x510], eax
mov byte [ebp - 0x456], al
lea eax, [ecx - 0x31]
xor byte [ebp + ecx - 0x470], al
inc ecx
cmp ecx, 0x19
jb 0x40736f
lea eax, [ebp - 0x514]
mov byte [ebp - 0x456], bl
push eax
push 0x20019
push ebx
lea eax, [ebp - 0x470]
push eax
push 0x80000002
call esi
test eax, eax
mov eax, dword fs:[0x30]
jne 0x4074aa
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [ebp - 0x510], eax
mov dword [ebp - 0x404], ecx
mov edx, dword [ecx + 0x18]
mov eax, dword [edx + 0x3c]
mov edi, dword [eax + edx + 0x78]
add edi, edx
cmp edi, edx
je 0x407451
mov esi, dword [edi + 0x18]
test esi, esi
je 0x407451
mov eax, dword [edi + 0x20]
lea eax, [eax + esi*4]
add eax, edx
sub eax, 4
dec esi
mov dword [ebp - 0x400], eax
mov ecx, dword [eax]
mov eax, 0xee2a2771
add ecx, edx
mov dword [ebp - 0x508], eax
mov al, byte [ecx]
inc ecx
mov byte [ebp - 0x501], al
test al, al
mov eax, dword [ebp - 0x400]
je 0x407447
mov al, byte [ebp - 0x501]
mov ebx, dword [ebp - 0x508]
movsx eax, al
xor eax, ebx
imul ebx, eax, 0x1000193
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40741b
mov dword [ebp - 0x508], ebx
xor ebx, ebx
cmp dword [ebp - 0x508], 0x565f363e
je 0x407486
mov eax, dword [ebp - 0x400]
test esi, esi
jne 0x4073e3
mov ecx, dword [ebp - 0x404]
mov eax, dword [ecx]
mov ecx, eax
mov dword [ebp - 0x404], eax
cmp eax, dword [ebp - 0x510]
je 0x40749b
cmp dword [ecx + 0x18], ebx
jne 0x4073c4
jmp 0x40749b
mov eax, dword [edi + 0x24]
mov ecx, dword [edi + 0x1c]
add eax, edx
add ecx, edx
movzx eax, word [eax + esi*2]
mov esi, dword [ecx + eax*4]
add esi, edx
jmp 0x407333
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 ebx, dword [eax + edx]
add ebx, edx
push dword [ebp - 0x514]
call ebx
mov al, 1
jmp 0x40832b
mov dword [ebp - 0x518], ebx
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [ebp - 0x410], eax
mov dword [ebp - 0x404], ecx
mov edx, dword [ecx + 0x18]
mov eax, dword [edx + 0x3c]
mov edi, dword [eax + edx + 0x78]
mov eax, dword [eax + edx + 0x7c]
add edi, edx
mov dword [ebp - 0x418], eax
cmp edi, edx
je 0x40755b
mov esi, dword [edi + 0x18]
test esi, esi
je 0x40755b
mov eax, dword [edi + 0x20]
lea eax, [eax + esi*4]
add eax, edx
sub eax, 4
dec esi
mov dword [ebp - 0x400], eax
mov ecx, dword [eax]
mov eax, 0x257a2676
add ecx, edx
mov dword [ebp - 0x508], eax
mov al, byte [ecx]
inc ecx
mov byte [ebp - 0x501], al
test al, al
mov eax, dword [ebp - 0x400]
je 0x407557
mov al, byte [ebp - 0x501]
mov ebx, dword [ebp - 0x508]
movsx eax, al
xor eax, ebx
imul ebx, eax, 0x1000193
mov al, byte [ecx]
inc ecx
test al, al
jne 0x407527
mov dword [ebp - 0x508], ebx
xor ebx, ebx
cmp dword [ebp - 0x508], 0xe67e11ad
je 0x4076ba
mov eax, dword [ebp - 0x400]
test esi, esi
jne 0x4074ef
mov eax, dword [ebp - 0x404]
mov eax, dword [eax]
mov ecx, eax
mov dword [ebp - 0x404], eax
cmp eax, dword [ebp - 0x410]
je 0x40757c
cmp dword [ecx + 0x18], ebx
jne 0x4074c6
mov esi, ebx
movaps xmm0, xmmword [0x4b6cd0]
mov ecx, ebx
movups xmmword [ebp - 0x488], xmm0
mov dword [ebp - 0x458], 0x72729a
movaps xmm0, xmmword [0x4b6a30]
movups xmmword [ebp - 0x478], xmm0
mov byte [ebp - 0x454], 1
movaps xmm0, xmmword [0x4b6a60]
movups xmmword [ebp - 0x468], xmm0
lea eax, [ecx - 0x31]
xor byte [ebp + ecx - 0x488], al
inc ecx
cmp ecx, 0x33
jb 0x4075bb
lea eax, [ebp - 0x518]
mov byte [ebp - 0x454], bl
push eax
push 0x20019
push ebx
lea eax, [ebp - 0x488]
push eax
push 0x80000002
call esi
test eax, eax
mov eax, dword fs:[0x30]
jne 0x4076f2
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [ebp - 0x410], eax
mov dword [ebp - 0x404], ecx
mov edx, dword [ecx + 0x18]
mov eax, dword [edx + 0x3c]
mov edi, dword [eax + edx + 0x78]
add edi, edx
cmp edi, edx
je 0x40769d
mov esi, dword [edi + 0x18]
test esi, esi
je 0x40769d
mov eax, dword [edi + 0x20]
lea eax, [eax + esi*4]
add eax, edx
sub eax, 4
dec esi
mov dword [ebp - 0x400], eax
mov ecx, dword [eax]
mov eax, 0xf94d64c1
add ecx, edx
mov dword [ebp - 0x508], eax
mov al, byte [ecx]
inc ecx
mov byte [ebp - 0x501], al
test al, al
mov eax, dword [ebp - 0x400]
je 0x407693
mov al, byte [ebp - 0x501]
mov ebx, dword [ebp - 0x508]
movsx eax, al
xor eax, ebx
imul ebx, eax, 0x1000193
mov al, byte [ecx]
inc ecx
test al, al
jne 0x407667
mov dword [ebp - 0x508], ebx
xor ebx, ebx
cmp dword [ebp - 0x508], 0x79ec3bce
je 0x4076d2
mov eax, dword [ebp - 0x400]
test esi, esi
jne 0x40762f
mov ecx, dword [ebp - 0x404]
mov eax, dword [ecx]
mov ecx, eax
mov dword [ebp - 0x404], eax
cmp eax, dword [ebp - 0x410]
je 0x4076e7
cmp dword [ecx + 0x18], ebx
jne 0x407610
jmp 0x4076e7
mov eax, dword [edi + 0x24]
mov ecx, dword [edi + 0x1c]
add eax, edx
add ecx, edx
movzx eax, word [eax + esi*2]
mov esi, dword [ecx + eax*4]
add esi, edx
jmp 0x40757e
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 ebx, dword [eax + edx]
add ebx, edx
push dword [ebp - 0x518]
jmp 0x4074a1
mov dword [ebp - 0x51c], ebx
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [ebp - 0x410], eax
mov dword [ebp - 0x404], ecx
mov edx, dword [ecx + 0x18]
mov eax, dword [edx + 0x3c]
mov edi, dword [eax + edx + 0x78]
mov eax, dword [eax + edx + 0x7c]
add edi, edx
mov dword [ebp - 0x418], eax
cmp edi, edx
je 0x4077a3
mov esi, dword [edi + 0x18]
test esi, esi
je 0x4077a3
mov eax, dword [edi + 0x20]
lea eax, [eax + esi*4]
add eax, edx
sub eax, 4
dec esi
mov dword [ebp - 0x400], eax
mov ecx, dword [eax]
mov eax, 0xf83832b3
add ecx, edx
mov dword [ebp - 0x508], eax
mov al, byte [ecx]
inc ecx
mov byte [ebp - 0x501], al
test al, al
mov eax, dword [ebp - 0x400]
je 0x40779f
mov al, byte [ebp - 0x501]
mov ebx, dword [ebp - 0x508]
movsx eax, al
xor eax, ebx
imul ebx, eax, 0x1000193
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40776f
mov dword [ebp - 0x508], ebx
xor ebx, ebx
cmp dword [ebp - 0x508], 0xf077a46a
je 0x4078e2
mov eax, dword [ebp - 0x400]
test esi, esi
jne 0x407737
mov eax, dword [ebp - 0x404]
mov eax, dword [eax]
mov ecx, eax
mov dword [ebp - 0x404], eax
cmp eax, dword [ebp - 0x410]
je 0x4077c4
cmp dword [ecx + 0x18], ebx
jne 0x40770e
mov esi, ebx
lea ecx, [ebp - 0x448]
mov dword [ebp - 0x448], 0x86979f9c
mov dword [ebp - 0x444], 0x93879584
mov dword [ebp - 0x440], 0xb4b08f8b
mov word [ebp - 0x43c], 0xbe
mov byte [ebp - 0x43a], 1
call fcn.00403ccd
lea ecx, [ebp - 0x51c]
push ecx
push 0x20019
push ebx
push eax
push 0x80000002
call esi
test eax, eax
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 - 0x404], ecx
jne 0x40791a
mov dword [ebp - 0x410], eax
mov edx, dword [ecx + 0x18]
mov eax, dword [edx + 0x3c]
mov edi, dword [eax + edx + 0x78]
add edi, edx
cmp edi, edx
je 0x4078c5
mov esi, dword [edi + 0x18]
test esi, esi
je 0x4078c5
mov eax, dword [edi + 0x20]
lea eax, [eax + esi*4]
add eax, edx
sub eax, 4
dec esi
mov dword [ebp - 0x400], eax
mov ecx, dword [eax]
mov eax, 0xbdeeede5
add ecx, edx
mov dword [ebp - 0x508], eax
mov al, byte [ecx]
inc ecx
mov byte [ebp - 0x501], al
test al, al
mov eax, dword [ebp - 0x400]
je 0x4078bb
mov al, byte [ebp - 0x501]
mov ebx, dword [ebp - 0x508]
movsx eax, al
xor eax, ebx
imul ebx, eax, 0x1000193
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40788f
mov dword [ebp - 0x508], ebx
xor ebx, ebx
cmp dword [ebp - 0x508], 0xa485452a
je 0x4078fa
mov eax, dword [ebp - 0x400]
test esi, esi
jne 0x407857
mov ecx, dword [ebp - 0x404]
mov eax, dword [ecx]
mov ecx, eax
mov dword [ebp - 0x404], eax
cmp eax, dword [ebp - 0x410]
je 0x40790f
cmp dword [ecx + 0x18], ebx
jne 0x407838
jmp 0x40790f
mov eax, dword [edi + 0x24]
mov ecx, dword [edi + 0x1c]
add eax, edx
add ecx, edx
movzx eax, word [eax + esi*2]
mov esi, dword [ecx + eax*4]
add esi, edx
jmp 0x4077c6
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 ebx, dword [eax + edx]
add ebx, edx
push dword [ebp - 0x51c]
jmp 0x4074a1
mov dword [ebp - 0x410], eax
mov edx, dword [ecx + 0x18]
mov eax, dword [edx + 0x3c]
mov edi, dword [eax + edx + 0x78]
mov eax, dword [eax + edx + 0x7c]
add edi, edx
mov dword [ebp - 0x418], eax
cmp edi, edx
je 0x4079b5
mov esi, dword [edi + 0x18]
test esi, esi
je 0x4079b5
mov eax, dword [edi + 0x20]
lea eax, [eax + esi*4]
add eax, edx
sub eax, 4
dec esi
mov dword [ebp - 0x400], eax
mov ecx, dword [eax]
mov eax, 0x7c3686a6
add ecx, edx
mov dword [ebp - 0x508], eax
mov al, byte [ecx]
inc ecx
mov byte [ebp - 0x501], al
test al, al
mov eax, dword [ebp - 0x400]
je 0x4079b1
mov al, byte [ebp - 0x501]
mov ebx, dword [ebp - 0x508]
movsx eax, al
xor eax, ebx
imul ebx, eax, 0x1000193
mov al, byte [ecx]
inc ecx
test al, al
jne 0x407981
mov dword [ebp - 0x508], ebx
xor ebx, ebx
cmp dword [ebp - 0x508], 0xed56a740
je 0x407d26
mov eax, dword [ebp - 0x400]
test esi, esi
jne 0x407949
mov eax, dword [ebp - 0x404]
mov eax, dword [eax]
mov ecx, eax
mov dword [ebp - 0x404], eax
cmp eax, dword [ebp - 0x410]
je 0x4079d6
cmp dword [ecx + 0x18], ebx
jne 0x407920
mov esi, ebx
movaps xmm0, xmmword [0x4b6c20]
lea ecx, [ebp - 0x44c]
movups xmmword [ebp - 0x44c], xmm0
mov dword [ebp - 0x43c], 0x10092ba
call fcn.00405bbe
movaps xmm0, xmmword [0x4b6cc0]
mov edx, eax
movups xmmword [ebp - 0x488], xmm0
mov ecx, ebx
mov dword [ebp - 0x458], 0x1006e90
movaps xmm0, xmmword [0x4b6a00]
movups xmmword [ebp - 0x478], xmm0
movaps xmm0, xmmword [0x4b6ad0]
movups xmmword [ebp - 0x468], xmm0
lea eax, [ecx - 0x31]
xor byte [ebp + ecx - 0x488], al
inc ecx
cmp ecx, 0x32
jb 0x407a33
lea eax, [ebp - 0x520]
mov byte [ebp - 0x455], bl
push eax
lea eax, [ebp - 0x3f8]
push eax
push ebx
push 0xffff
push edx
lea eax, [ebp - 0x488]
push eax
push 0x80000002
call esi
lea edx, [ebp - 0x3f8]
mov esi, eax
lea ecx, [edx + 1]
mov al, byte [edx]
inc edx
test al, al
jne 0x407a77
sub edx, ecx
lea ecx, [ebp - 0x3f8]
call fcn.004064ae
lea eax, [ebp - 0x3f8]
push eax
lea ecx, [ebp - 0x450]
call fcn.0041437c
or edi, 0xffffffff
mov dword [ebp - 4], ebx
test esi, esi
jne 0x407d3e
lea eax, [ebp - 0x46c]
mov dword [ebp - 0x408], 0xb3a6bdb9
push eax
lea ecx, [ebp - 0x408]
mov dword [ebp - 0x404], 0x100b1a1
call fcn.00413d4f
xor eax, eax
lea ecx, [ebp - 0x450]
inc eax
mov byte [ebp - 4], al
mov esi, eax
push ebx
lea eax, [ebp - 0x46c]
mov dword [ebp - 0x50c], esi
push eax
mov dword [ebp - 0x508], esi
call fcn.00414215
cmp eax, edi
jne 0x407d1d
lea ecx, [ebp - 0x438]
mov dword [ebp - 0x438], 0xbdbfbea6
mov dword [ebp - 0x434], 0xf6beb1a7
mov dword [ebp - 0x430], 0xb2bbb5b0
mov word [ebp - 0x42c], 0x100
call fcn.00412954
push ecx
lea eax, [ebp - 0x42c]
push eax
lea eax, [ebp - 0x438]
push eax
lea ecx, [ebp - 0x500]
call fcn.004161fa
push ebx
lea eax, [ebp - 0x500]
mov dword [ebp - 4], 2
mov esi, 0x3003
lea ecx, [ebp - 0x450]
push eax
mov dword [ebp - 0x50c], esi
mov dword [ebp - 0x508], esi
call fcn.00414215
cmp eax, edi
jne 0x407d1d
lea ecx, [ebp - 0x400]
mov dword [ebp - 0x400], 0xa7bcb5be
mov word [ebp - 0x3fc], 0x100
call fcn.004127dc
push ecx
lea eax, [ebp - 0x3fc]
push eax
mov eax, ecx
lea ecx, [ebp - 0x4e8]
push eax
call fcn.004161fa
push ebx
lea eax, [ebp - 0x4e8]
mov dword [ebp - 4], 3
mov esi, 0xf007
lea ecx, [ebp - 0x450]
push eax
mov dword [ebp - 0x50c], esi
mov dword [ebp - 0x508], esi
call fcn.00414215
cmp eax, edi
jne 0x407d1d
lea eax, [ebp - 0x4d0]
mov dword [ebp - 0x428], 0xbea1a08e
push eax
lea ecx, [ebp - 0x428]
mov dword [ebp - 0x424], 0xb8bcf4b6
mov dword [ebp - 0x420], 0x100f6b4
call fcn.00412a0e
push ebx
lea eax, [ebp - 0x4d0]
mov dword [ebp - 4], 4
add esi, 8
lea ecx, [ebp - 0x450]
push eax
mov dword [ebp - 0x50c], esi
mov dword [ebp - 0x508], esi
call fcn.00414215
cmp eax, edi
jne 0x407d1d
mov dword [ebp - 0x410], 0xbca6a4
mov ecx, ebx
mov byte [ebp - 0x40c], 1
lea eax, [ecx - 0x31]
xor byte [ebp + ecx - 0x410], al
inc ecx
cmp ecx, 3
jb 0x407c5a
push ecx
lea eax, [ebp - 0x40d]
mov byte [ebp - 0x40c], bl
push eax
lea eax, [ebp - 0x410]
push eax
lea ecx, [ebp - 0x4b8]
call fcn.004161fa
push ebx
lea eax, [ebp - 0x4b8]
mov dword [ebp - 4], 5
mov esi, 0x30f01f
lea ecx, [ebp - 0x450]
push eax
mov dword [ebp - 0x50c], esi
mov dword [ebp - 0x508], esi
call fcn.00414215
cmp eax, edi
jne 0x407d1d
lea ecx, [ebp - 0x41c]
mov dword [ebp - 0x41c], 0xb3a3b1bf
mov dword [ebp - 0x418], 0xbab0b8bf
mov word [ebp - 0x414], 0x100
call fcn.004128c4
push ecx
lea eax, [ebp - 0x414]
push eax
lea eax, [ebp - 0x41c]
push eax
lea ecx, [ebp - 0x4a0]
call fcn.004161fa
push ebx
lea eax, [ebp - 0x4a0]
mov esi, 0xf0f03f
push eax
lea ecx, [ebp - 0x450]
mov dword [ebp - 0x50c], esi
call fcn.00414215
cmp eax, edi
je 0x407d3e
mov byte [ebp - 0x501], 1
jmp 0x407d44
mov eax, dword [edi + 0x24]
mov ecx, dword [edi + 0x1c]
add eax, edx
add ecx, edx
movzx eax, word [eax + esi*2]
mov esi, dword [ecx + eax*4]
add esi, edx
jmp 0x4079d8
mov byte [ebp - 0x501], bl
mov eax, dword [ebp - 0x50c]
test al, 0x20
je 0x407d68
and eax, 0xffffffdf
lea ecx, [ebp - 0x4a0]
mov dword [ebp - 0x50c], eax
call fcn.004151f6
mov eax, dword [ebp - 0x50c]
test al, 0x10
je 0x407d86
and eax, 0xffffffef
lea ecx, [ebp - 0x4b8]
mov dword [ebp - 0x50c], eax
call fcn.004151f6
mov eax, dword [ebp - 0x50c]
test al, 8
je 0x407da4
and eax, 0xfffffff7
lea ecx, [ebp - 0x4d0]
mov dword [ebp - 0x50c], eax
call fcn.004151f6
mov eax, dword [ebp - 0x50c]
test al, 4
je 0x407dc2
and eax, 0xfffffffb
lea ecx, [ebp - 0x4e8]
mov dword [ebp - 0x50c], eax
call fcn.004151f6
mov eax, dword [ebp - 0x50c]
test al, 2
je 0x407de0
and eax, 0xfffffffd
lea ecx, [ebp - 0x500]
mov dword [ebp - 0x50c], eax
call fcn.004151f6
mov eax, dword [ebp - 0x50c]
mov dword [ebp - 4], ebx
test al, 1
je 0x407dfb
and eax, 0xfffffffe
lea ecx, [ebp - 0x46c]
mov dword [ebp - 0x50c], eax
call fcn.004151f6
cmp byte [ebp - 0x501], 0
lea ecx, [ebp - 0x450]
je 0x407e14
call fcn.004151f6
jmp 0x4074a3
mov dword [ebp - 4], edi
call fcn.004151f6
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 - 0x410], eax
mov dword [ebp - 0x404], ecx
mov edx, dword [ecx + 0x18]
mov eax, dword [edx + 0x3c]
mov edi, dword [eax + edx + 0x78]
mov eax, dword [eax + edx + 0x7c]
add edi, edx
mov dword [ebp - 0x418], eax
cmp edi, edx
je 0x407ecd
mov esi, dword [edi + 0x18]
test esi, esi
je 0x407ecd
mov eax, dword [edi + 0x20]
lea eax, [eax + esi*4]
add eax, edx
sub eax, 4
dec esi
mov dword [ebp - 0x400], eax
mov ecx, dword [eax]
mov eax, 0x6e069ce1
add ecx, edx
mov dword [ebp - 0x508], eax
mov al, byte [ecx]
inc ecx
mov byte [ebp - 0x501], al
test al, al
mov eax, dword [ebp - 0x400]
je 0x407ec9
mov al, byte [ebp - 0x501]
mov ebx, dword [ebp - 0x508]
movsx eax, al
xor eax, ebx
imul ebx, eax, 0x1000193
mov al, byte [ecx]
inc ecx
test al, al
jne 0x407e99
mov dword [ebp - 0x508], ebx
xor ebx, ebx
cmp dword [ebp - 0x508], 0x65f5d2bb
je 0x40822f
mov eax, dword [ebp - 0x400]
test esi, esi
jne 0x407e61
mov eax, dword [ebp - 0x404]
mov eax, dword [eax]
mov ecx, eax
mov dword [ebp - 0x404], eax
cmp eax, dword [ebp - 0x410]
je 0x407eee
cmp dword [ecx + 0x18], ebx
jne 0x407e38
mov esi, ebx
movaps xmm0, xmmword [0x4b6d20]
lea ecx, [ebp - 0x44c]
movups xmmword [ebp - 0x44c], xmm0
mov word [ebp - 0x43c], 0xba
mov byte [ebp - 0x43a], 1
call fcn.00402e9c
movaps xmm0, xmmword [0x4b6cc0]
mov edx, eax
movups xmmword [ebp - 0x488], xmm0
mov ecx, ebx
mov dword [ebp - 0x458], 0x1006e90
movaps xmm0, xmmword [0x4b6a00]
movups xmmword [ebp - 0x478], xmm0
movaps xmm0, xmmword [0x4b6ad0]
movups xmmword [ebp - 0x468], xmm0
lea eax, [ecx - 0x31]
xor byte [ebp + ecx - 0x488], al
inc ecx
cmp ecx, 0x32
jb 0x407f51
lea eax, [ebp - 0x520]
mov byte [ebp - 0x455], bl
push eax
lea eax, [ebp - 0x3f8]
push eax
push ebx
push 0xffff
push edx
lea eax, [ebp - 0x488]
push eax
push 0x80000002
call esi
lea edx, [ebp - 0x3f8]
mov esi, eax
lea ecx, [edx + 1]
mov al, byte [edx]
inc edx
test al, al
jne 0x407f95
sub edx, ecx
lea ecx, [ebp - 0x3f8]
call fcn.004064ae
lea eax, [ebp - 0x3f8]
push eax
lea ecx, [ebp - 0x4a0]
call fcn.0041437c
mov dword [ebp - 4], 6
mov edi, 0x400
test esi, esi
jne 0x408247
lea eax, [ebp - 0x450]
mov dword [ebp - 0x408], 0xb3a6bdb9
push eax
lea ecx, [ebp - 0x408]
mov dword [ebp - 0x404], 0x100b1a1
call fcn.00413d4f
mov byte [ebp - 4], 7
lea eax, [ebp - 0x450]
mov esi, dword [ebp - 0x50c]
lea ecx, [ebp - 0x4a0]
push ebx
or esi, 0x40
push eax
mov dword [ebp - 0x50c], esi
mov dword [ebp - 0x508], esi
call fcn.00414215
cmp eax, 0xffffffff
jne 0x408226
lea eax, [ebp - 0x4b8]
mov dword [ebp - 0x438], 0xa6a3b9b9
push eax
lea ecx, [ebp - 0x438]
mov dword [ebp - 0x434], 0xb4b9b5a6
mov dword [ebp - 0x430], 0x100a0b8
call fcn.00412a0e
push ebx
lea eax, [ebp - 0x4b8]
mov dword [ebp - 4], 8
or esi, 0x80
lea ecx, [ebp - 0x4a0]
push eax
mov dword [ebp - 0x50c], esi
mov dword [ebp - 0x508], esi
call fcn.00414215
cmp eax, 0xffffffff
jne 0x408226
lea ecx, [ebp - 0x428]
mov dword [ebp - 0x428], 0xb3a3b1bf
mov dword [ebp - 0x424], 0xbab0b8bf
mov word [ebp - 0x420], 0x100
call fcn.004128c4
push ecx
lea eax, [ebp - 0x420]
push eax
lea eax, [ebp - 0x428]
push eax
lea ecx, [ebp - 0x4d0]
call fcn.004161fa
or esi, 0x30000
push ebx
lea eax, [ebp - 0x4d0]
mov dword [ebp - 4], 9
or esi, 0x100
lea ecx, [ebp - 0x4a0]
push eax
mov dword [ebp - 0x50c], esi
mov dword [ebp - 0x508], esi
call fcn.00414215
cmp eax, 0xffffffff
jne 0x408226
lea ecx, [ebp - 0x410]
mov dword [ebp - 0x410], 0xa7bcb5be
mov word [ebp - 0x40c], 0x100
call fcn.004127dc
push ecx
lea eax, [ebp - 0x40c]
push eax
mov eax, ecx
lea ecx, [ebp - 0x4e8]
push eax
call fcn.004161fa
or esi, 0xc0000
push ebx
lea eax, [ebp - 0x4e8]
mov dword [ebp - 4], 0xa
or esi, 0x200
lea ecx, [ebp - 0x4a0]
push eax
mov dword [ebp - 0x50c], esi
mov dword [ebp - 0x508], esi
call fcn.00414215
cmp eax, 0xffffffff
jne 0x408226
lea eax, [ebp - 0x500]
mov dword [ebp - 0x41c], 0xa6a3b9b9
push eax
lea ecx, [ebp - 0x41c]
mov dword [ebp - 0x418], 0x100bbba
call fcn.00413d4f
push ebx
lea eax, [ebp - 0x500]
mov dword [ebp - 4], 0xb
or esi, edi
lea ecx, [ebp - 0x4a0]
push eax
mov dword [ebp - 0x50c], esi
mov dword [ebp - 0x508], esi
call fcn.00414215
cmp eax, 0xffffffff
jne 0x408226
lea ecx, [ebp - 0x400]
mov dword [ebp - 0x400], 0xaabeb2b9
mov word [ebp - 0x3fc], 0x100
call fcn.004127dc
push ecx
lea eax, [ebp - 0x3fc]
push eax
mov eax, ecx
lea ecx, [ebp - 0x46c]
push eax
call fcn.004161fa
push ebx
lea eax, [ebp - 0x46c]
or esi, 0x3000800
push eax
lea ecx, [ebp - 0x4a0]
mov dword [ebp - 0x50c], esi
call fcn.00414215
cmp eax, 0xffffffff
je 0x408247
mov byte [ebp - 0x501], 1
jmp 0x40824d
mov eax, dword [edi + 0x24]
mov ecx, dword [edi + 0x1c]
add eax, edx
add ecx, edx
movzx eax, word [eax + esi*2]
mov esi, dword [ecx + eax*4]
add esi, edx
jmp 0x407ef0
mov byte [ebp - 0x501], bl
mov eax, dword [ebp - 0x50c]
test eax, 0x800
je 0x408276
and eax, 0xfffff7ff
lea ecx, [ebp - 0x46c]
mov dword [ebp - 0x50c], eax
call fcn.004151f6
mov eax, dword [ebp - 0x50c]
test edi, eax
je 0x408296
and eax, 0xfffffbff
lea ecx, [ebp - 0x500]
mov dword [ebp - 0x50c], eax
call fcn.004151f6
mov eax, dword [ebp - 0x50c]
test eax, 0x200
je 0x4082b9
and eax, 0xfffffdff
lea ecx, [ebp - 0x4e8]
mov dword [ebp - 0x50c], eax
call fcn.004151f6
mov eax, dword [ebp - 0x50c]
test eax, 0x100
je 0x4082dc
and eax, 0xfffffeff
lea ecx, [ebp - 0x4d0]
mov dword [ebp - 0x50c], eax
call fcn.004151f6
mov eax, dword [ebp - 0x50c]
test al, al
jns 0x4082fc
and eax, 0xffffff7f
lea ecx, [ebp - 0x4b8]
mov dword [ebp - 0x50c], eax
call fcn.004151f6
mov eax, dword [ebp - 0x50c]
test al, 0x40
je 0x40830b
lea ecx, [ebp - 0x450]
call fcn.004151f6
cmp byte [ebp - 0x501], 0
jne 0x40831a
mov byte [ebp - 0x510], bl
lea ecx, [ebp - 0x4a0]
call fcn.004151f6
mov al, byte [ebp - 0x510]
call fcn.0046c79c
ret