Function at 0x5327f0
Capabilities:
Hash data with md5

Disassembly:
mov eax, 0x1c
call fcn.00525ec0
push ebx
push ebp
push esi
mov esi, ecx
mov eax, dword [esi]
sub eax, dword [esi + 4]
push edi
add eax, dword [esi + 8]
mov edi, edx
cmp eax, 0x20
jae 0x532819
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret
mov ecx, dword [edi + 4]
mov ebx, dword [ecx + 0x20]
xor ebp, ebp
cmp ebx, ebp
jne 0x5328d1
push 0x148
call fcn.0050f3bc
add esp, 4
push 0x148
mov ebx, eax
push ebp
push ebx
call fcn.00516180
add esp, 0xc
push 8
mov dword [ebx], edi
mov dword [ebx + 0x144], ebp
call fcn.0050f3bc
mov dword [eax + 4], ebp
add esp, 4
mov edx, 4
mov word [eax], dx
xor ecx, ecx
mov word [eax + 2], cx
mov dword [ebx + 0x10], eax
pxor xmm0, xmm0
movq qword [ebx + 0x4c], xmm0
push 0x30
movq qword [ebx + 0x54], xmm0
lea edx, [ebx + 0xbc]
push ebp
movq qword [ebx + 0x5c], xmm0
push edx
movq qword [ebx + 0x64], xmm0
call fcn.00516180
movq xmm0, qword [0x5bc104]
movq qword [ebx + 0x4c], xmm0
movq xmm0, qword [0x5bc10c]
movq qword [ebx + 0x54], xmm0
movq xmm0, qword [0x5bc114]
movq qword [ebx + 0x5c], xmm0
movq xmm0, qword [0x5bc11c]
movq qword [ebx + 0x64], xmm0
mov eax, dword [edi + 4]
add esp, 0xc
mov dword [eax + 0x20], ebx
cmp dword [ebx + 4], ebp
jne 0x5328f7
push 0x10
call fcn.0050f3bc
pxor xmm0, xmm0
add esp, 4
movq qword [eax], xmm0
movq qword [eax + 8], xmm0
cmp eax, ebp
je 0x5328f4
mov dword [eax + 0xc], ebp
mov dword [ebx + 4], eax
cmp dword [ebx + 0xc], ebp
jne 0x532917
push 0x14
call fcn.0050f3bc
mov dword [eax], ebp
mov dword [eax + 4], ebp
mov dword [eax + 8], ebp
mov dword [eax + 0xc], ebp
mov dword [eax + 0x10], ebp
add esp, 4
mov dword [ebx + 0xc], eax
cmp dword [ebx + 0x14], ebp
jne 0x53293a
push 8
call fcn.0050f3bc
add esp, 4
mov ecx, 0xd
xor edx, edx
mov word [eax], cx
mov word [eax + 2], dx
mov dword [eax + 4], ebp
mov dword [ebx + 0x14], eax
cmp dword [ebx + 0x18], ebp
jne 0x53295d
push 8
call fcn.0050f3bc
add esp, 4
mov ecx, 3
xor edx, edx
mov word [eax], cx
mov word [eax + 2], dx
mov dword [eax + 4], ebp
mov dword [ebx + 0x18], eax
cmp dword [ebx + 0x34], ebp
jne 0x532974
push 8
call fcn.0050f3bc
mov dword [eax], ebp
mov dword [eax + 4], ebp
add esp, 4
mov dword [ebx + 0x34], eax
mov eax, dword [esi + 4]
movq xmm0, qword [eax]
movq qword [ebx + 0x6c], xmm0
movq xmm0, qword [eax + 8]
movq qword [ebx + 0x74], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebx + 0x7c], xmm0
movq xmm0, qword [eax + 0x18]
movq qword [ebx + 0x84], xmm0
add dword [esi + 4], 0x20
mov eax, dword [esi + 4]
mov ecx, dword [esi]
mov edi, dword [ebx + 0xc]
sub ecx, eax
add ecx, dword [esi + 8]
cmp ecx, 8
jb 0x53280f
movzx edx, byte [eax + 3]
movzx ecx, byte [eax + 2]
shl edx, 8
add edx, ecx
movzx ecx, byte [eax + 1]
movzx eax, byte [eax]
shl edx, 8
add edx, ecx
shl edx, 8
add edx, eax
mov dword [edi], edx
add dword [esi + 4], 4
mov eax, dword [esi + 4]
movzx ecx, byte [eax + 3]
movzx edx, byte [eax + 2]
shl ecx, 8
add ecx, edx
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
shl ecx, 8
add ecx, edx
shl ecx, 8
add ecx, eax
mov dword [edi + 4], ecx
add dword [esi + 4], 4
mov ecx, dword [esi + 4]
mov edx, dword [esi]
mov eax, dword [edi + 4]
sub edx, ecx
add edx, dword [esi + 8]
lea ecx, [eax + 4]
cmp edx, ecx
jb 0x53280f
push eax
call fcn.0050f3bc
mov edx, dword [edi + 4]
add esp, 4
mov dword [edi + 8], eax
mov ecx, dword [esi + 4]
push edx
push ecx
push eax
call fcn.005165f0
mov edx, dword [edi + 4]
add dword [esi + 4], edx
mov eax, dword [esi + 4]
movzx ecx, byte [eax + 3]
movzx edx, byte [eax + 2]
shl ecx, 8
add ecx, edx
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
shl ecx, 8
add ecx, edx
shl ecx, 8
add ecx, eax
mov dword [edi + 0xc], ecx
add dword [esi + 4], 4
mov ecx, dword [esi + 4]
mov edx, dword [esi]
mov eax, dword [edi + 0xc]
sub edx, ecx
add edx, dword [esi + 8]
add esp, 0xc
cmp edx, eax
jae 0x532a94
mov eax, dword [edi + 8]
push eax
call fcn.0050f521
add esp, 4
mov dword [edi + 8], ebp
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret
push eax
call fcn.0050f3bc
mov ecx, dword [edi + 0xc]
add esp, 4
mov dword [edi + 0x10], eax
mov edx, dword [esi + 4]
push ecx
push edx
push eax
call fcn.005165f0
mov eax, dword [edi + 0xc]
add dword [esi + 4], eax
mov eax, dword [esi + 4]
mov ecx, dword [esi]
mov edi, dword [ebx + 0x14]
sub ecx, eax
add ecx, dword [esi + 8]
add esp, 0xc
cmp ecx, 4
jb 0x53280f
movzx dx, byte [eax + 1]
mov ecx, 0x100
imul dx, cx
movzx ecx, byte [eax]
add dx, cx
add eax, 2
mov dword [esi + 4], eax
movzx ecx, byte [eax + 1]
movzx ax, byte [eax]
movzx edx, dx
mov dword [esp + 0x18], edx
mov edx, 0x100
imul cx, dx
add cx, ax
mov word [edi + 2], cx
add dword [esi + 4], 2
movzx ecx, word [edi + 2]
mov edx, dword [esi + 4]
mov ebp, dword [esi]
sub ebp, edx
add ebp, dword [esi + 8]
movzx eax, cx
cmp ebp, eax
jb 0x53280f
cmp word [edi], 0
je 0x532b2e
test cx, cx
je 0x532b5b
mov cx, word [esp + 0x18]
push eax
mov word [edi], cx
call fcn.0050f3bc
movzx edx, word [edi + 2]
add esp, 4
mov dword [edi + 4], eax
mov ecx, dword [esi + 4]
push edx
push ecx
push eax
call fcn.005165f0
movzx edx, word [edi + 2]
add esp, 0xc
add dword [esi + 4], edx
mov eax, dword [esi + 4]
mov ecx, dword [esi]
mov edi, dword [ebx + 0x18]
sub ecx, eax
add ecx, dword [esi + 8]
cmp ecx, 4
jb 0x53280f
movzx dx, byte [eax + 1]
mov ecx, 0x100
imul dx, cx
movzx ecx, byte [eax]
add dx, cx
add eax, 2
mov dword [esi + 4], eax
movzx ecx, byte [eax + 1]
movzx ax, byte [eax]
movzx edx, dx
mov dword [esp + 0x18], edx
mov edx, 0x100
imul cx, dx
add cx, ax
mov word [edi + 2], cx
add dword [esi + 4], 2
movzx ecx, word [edi + 2]
mov edx, dword [esi + 4]
mov ebp, dword [esi]
sub ebp, edx
add ebp, dword [esi + 8]
movzx eax, cx
cmp ebp, eax
jb 0x53280f
cmp word [edi], 0
je 0x532bd2
test cx, cx
je 0x532bff
mov cx, word [esp + 0x18]
push eax
mov word [edi], cx
call fcn.0050f3bc
movzx edx, word [edi + 2]
add esp, 4
mov dword [edi + 4], eax
mov ecx, dword [esi + 4]
push edx
push ecx
push eax
call fcn.005165f0
movzx edx, word [edi + 2]
add esp, 0xc
add dword [esi + 4], edx
mov eax, dword [ebx + 0x34]
mov ecx, dword [esi]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 4]
sub ecx, eax
add ecx, dword [esi + 8]
cmp ecx, 4
jb 0x53280f
movzx ebp, byte [eax + 3]
movzx edx, byte [eax + 2]
movzx ecx, byte [eax + 1]
mov edi, dword [esp + 0x14]
shl ebp, 8
add ebp, edx
movzx edx, byte [eax]
shl ebp, 8
add ebp, ecx
add eax, 4
shl ebp, 8
add ebp, edx
mov dword [esi + 4], eax
lea eax, [ebp*8]
push eax
mov dword [edi], ebp
call fcn.0050f3bc
add esp, 4
mov dword [edi + 4], eax
mov dword [esp + 0x18], 0
test ebp, ebp
jbe 0x532d42
jmp 0x532c70
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 4]
add eax, eax
add eax, eax
add eax, eax
mov edi, 0xe
mov word [eax + edx], di
mov edi, dword [ecx + 4]
mov ecx, dword [esi]
add edi, eax
mov eax, dword [esi + 4]
sub ecx, eax
add ecx, dword [esi + 8]
cmp ecx, 4
jb 0x53280f
movzx dx, byte [eax + 1]
mov ecx, 0x100
imul dx, cx
movzx ecx, byte [eax]
add dx, cx
movzx edx, dx
add eax, 2
mov dword [esi + 4], eax
movzx ecx, byte [eax + 1]
movzx ax, byte [eax]
mov dword [esp + 0x1c], edx
mov edx, 0x100
imul cx, dx
add cx, ax
mov word [edi + 2], cx
add dword [esi + 4], 2
mov ecx, dword [esi + 4]
mov edx, dword [esi]
movzx eax, word [edi + 2]
sub edx, ecx
add edx, dword [esi + 8]
cmp edx, eax
jb 0x53280f
cmp word [edi], 0
je 0x532d04
movzx ecx, word [edi + 2]
test cx, cx
je 0x532d31
mov cx, word [esp + 0x1c]
push eax
mov word [edi], cx
call fcn.0050f3bc
movzx edx, word [edi + 2]
add esp, 4
mov dword [edi + 4], eax
mov ecx, dword [esi + 4]
push edx
push ecx
push eax
call fcn.005165f0
movzx edx, word [edi + 2]
add esp, 0xc
add dword [esi + 4], edx
mov eax, dword [esp + 0x18]
inc eax
mov dword [esp + 0x18], eax
cmp eax, ebp
jb 0x532c70
mov eax, dword [ebx + 0x18]
movzx edi, word [eax + 2]
cmp edi, 1
mov ebp, dword [eax + 4]
mov eax, dword [ebx + 4]
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], eax
jge 0x532d63
xor edi, edi
jmp 0x533130
cmp edi, 4
jge 0x532d70
or edi, 0xffffffff
jmp 0x533130
push 0x10
call fcn.0050f3bc
add esp, 4
mov esi, eax
test ebp, ebp
jne 0x532d8d
push edi
call fcn.0050f3bc
add esp, 4
mov dword [esi], eax
jmp 0x532d8f
mov dword [esi], ebp
mov ecx, dword [esi]
mov dword [esi + 4], ecx
mov dword [esi + 0xc], edi
mov dword [esi + 8], edi
movzx edx, byte [ecx + 3]
movzx eax, byte [ecx + 2]
shl edx, 8
add edx, eax
movzx eax, byte [ecx + 1]
shl edx, 8
add edx, eax
movzx eax, byte [ecx]
shl edx, 8
add edx, eax
and edx, 0x7fffffff
sub edx, 1
lea eax, [ecx + 4]
mov dword [esi + 4], eax
je 0x532f85
sub edx, 1
je 0x532dda
or edi, 0xffffffff
jmp 0x533127
sub ecx, eax
add ecx, edi
cmp ecx, 4
jb 0x533125
movzx ebp, byte [eax + 3]
movzx ecx, byte [eax + 2]
movzx edx, byte [eax + 1]
shl ebp, 8
add ebp, ecx
movzx ecx, byte [eax]
shl ebp, 8
add ebp, edx
add eax, 4
shl ebp, 8
push 8
add ebp, ecx
mov dword [esi + 4], eax
call fcn.0050f3bc
mov edi, eax
lea eax, [ebp*8]
add esp, 4
push eax
mov dword [edi], ebp
mov dword [esp + 0x20], eax
call fcn.0050f3bc
mov edx, dword [esp + 0x20]
add esp, 4
push edx
push 0
push eax
mov dword [edi + 4], eax
call fcn.00516180
mov eax, dword [esp + 0x24]
add esp, 0xc
mov dword [eax + 0xc], edi
mov dword [esp + 0x14], 0
test ebp, ebp
jle 0x532f7b
mov ecx, dword [esi + 8]
mov eax, dword [esi + 4]
mov edx, dword [esi]
mov edi, ecx
sub edi, eax
add edi, edx
cmp edi, 4
jb 0x533125
movzx edi, byte [eax + 3]
movzx edx, byte [eax + 2]
shl edi, 8
add edi, edx
movzx edx, byte [eax + 1]
shl edi, 8
add edi, edx
movzx edx, byte [eax]
add eax, 4
sub ecx, eax
add ecx, dword [esi]
shl edi, 8
add edi, edx
mov dword [esi + 4], eax
cmp ecx, edi
jb 0x533125
push edi
call fcn.0050f3bc
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx + 0xc]
mov ecx, dword [esp + 0x18]
mov edx, dword [edx + 4]
add ecx, ecx
add ecx, ecx
add ecx, ecx
mov dword [edx + ecx + 4], eax
mov eax, dword [esi + 4]
mov edx, dword [esp + 0x1c]
add esp, 4
push edi
push eax
mov eax, dword [edx + 0xc]
mov edx, dword [eax + 4]
mov eax, dword [edx + ecx + 4]
push eax
call fcn.005165f0
add dword [esi + 4], edi
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov edx, dword [ecx + 0xc]
mov ecx, dword [edx + 4]
add eax, eax
add eax, eax
add eax, eax
mov dword [eax + ecx], edi
mov eax, ebp
sub eax, dword [esp + 0x20]
add esp, 0xc
cmp eax, 2
jne 0x532f40
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0xc]
mov eax, dword [esp + 0x14]
add eax, eax
lea edx, [esp + 0x20]
push edx
mov edx, dword [ecx + 4]
add eax, eax
add eax, eax
add edx, eax
push edx
call fcn.00530970
mov edi, eax
mov eax, dword [esp + 0x20]
test eax, eax
je 0x532f3c
push eax
call fcn.0050f521
add esp, 4
mov dword [esp + 0x20], 0
test edi, edi
jmp 0x532f64
cmp eax, 1
jne 0x532f6a
mov eax, dword [esp + 0x18]
push eax
mov eax, dword [eax + 0xc]
mov ecx, dword [eax + 4]
mov eax, dword [esp + 0x18]
add eax, eax
add eax, eax
add eax, eax
add ecx, eax
push ecx
call fcn.00530970
test eax, eax
je 0x533125
mov eax, dword [esp + 0x14]
inc eax
cmp eax, ebp
mov dword [esp + 0x14], eax
jl 0x532e57
mov edi, 1
jmp 0x533127
mov edx, ecx
sub edx, eax
add edx, edi
cmp edx, 0xc
jb 0x533125
movzx edi, byte [eax + 2]
lea edx, [eax - 4]
mov dword [esp + 0x14], edx
movzx edx, byte [eax + 3]
shl edx, 8
add edx, edi
movzx edi, byte [eax + 1]
shl edx, 8
add edx, edi
movzx edi, byte [eax]
add eax, 4
mov dword [esi + 4], eax
movzx ebp, byte [eax + 2]
shl edx, 8
add edx, edi
movzx edi, byte [eax + 3]
shl edi, 8
add edi, ebp
movzx ebp, byte [eax + 1]
shl edi, 8
add edi, ebp
movzx ebp, byte [eax]
shl edi, 8
add eax, 4
add edi, ebp
mov dword [esi + 4], eax
cmp edx, 1
jne 0x533125
cmp edi, edx
jne 0x533125
movzx edi, byte [eax + 1]
movzx edx, byte [eax]
shl edi, 8
add edi, edx
lea edx, [eax + 2]
mov dword [esi + 4], edx
cmp edi, 6
jne 0x533125
movzx eax, byte [edx + 1]
movzx edi, byte [edx]
shl eax, 8
add edx, 2
add eax, edi
mov edi, dword [esp + 0x1c]
sub ecx, edx
add ecx, edi
mov dword [esi + 4], edx
cmp ecx, eax
jb 0x533125
cmp ecx, 0x14
jb 0x533125
mov eax, dword [edx]
lea ecx, [edx + 4]
mov dword [esi + 4], ecx
cmp eax, 0x31415352
jne 0x533125
movzx eax, byte [ecx + 3]
movzx edx, byte [ecx + 2]
mov edi, dword [esp + 0x18]
shl eax, 8
add eax, edx
movzx edx, byte [ecx + 1]
shl eax, 8
add eax, edx
movzx edx, byte [ecx]
add ecx, 0xc
mov dword [esi + 4], ecx
mov ecx, dword [ecx]
mov dword [edi + 8], ecx
add dword [esi + 4], 4
mov ecx, dword [esi + 4]
shl eax, 8
add eax, edx
mov edx, dword [esi + 8]
sub edx, ecx
add edx, dword [esi]
add eax, 0xfffffff8
lea ecx, [eax + 8]
cmp edx, ecx
jb 0x533125
push eax
mov dword [edi + 4], eax
call fcn.0050f3bc
mov edx, dword [edi + 4]
add esp, 4
mov dword [edi], eax
mov ecx, dword [esi + 4]
push edx
push ecx
push eax
call fcn.005165f0
mov edx, dword [edi + 4]
mov edi, dword [esi + 8]
mov ecx, dword [esi]
add edx, 8
add dword [esi + 4], edx
mov eax, dword [esi + 4]
mov edx, edi
sub edx, eax
add edx, ecx
add esp, 0xc
cmp edx, 4
jb 0x533125
movzx ecx, byte [eax + 1]
movzx edx, byte [eax]
shl ecx, 8
mov ebp, eax
sub ebp, dword [esp + 0x14]
add ecx, edx
lea edx, [eax + 2]
mov dword [esi + 4], edx
cmp ecx, 8
jne 0x533125
movzx eax, byte [edx + 1]
movzx ecx, byte [edx]
add edx, 2
sub edi, edx
add edi, dword [esi]
shl eax, 8
add eax, ecx
mov dword [esi + 4], edx
cmp edi, eax
jb 0x533125
cmp eax, 0x48
jne 0x533125
mov edx, dword [esp + 0x14]
push esi
push ebp
push edx
mov ecx, eax
call fcn.00532700
mov edi, eax
neg edi
sbb edi, edi
neg edi
jmp 0x533127
xor edi, edi
push esi
call fcn.0050f521
add esp, 4
xor eax, eax
test edi, edi
sete al
test eax, eax
jl 0x53280f
lea esi, [ebx + 0x8c]
push esi
lea eax, [ebx + 0x6c]
push eax
lea ebp, [ebx + 0x4c]
push ebp
push 1
lea edi, [ebx + 0xbc]
push 0x586814
call fcn.0052c3b0
lea ecx, [esi + 0x10]
push ecx
lea eax, [ebx + 0x6c]
push eax
push ebp
push 2
push 0x586818
call fcn.0052c3b0
lea edx, [esi + 0x20]
push edx
lea eax, [ebx + 0x6c]
push eax
push ebp
push 3
push 0x58681c
call fcn.0052c3b0
lea eax, [ebx + 0xec]
push eax
push ebp
lea eax, [ebx + 0x6c]
push eax
push 1
push 0x586814
mov edi, esi
call fcn.0052c3b0
lea eax, [ebx + 0xfc]
push eax
push ebp
lea eax, [ebx + 0x6c]
push eax
push 2
push 0x586818
call fcn.0052c3b0
lea ecx, [ebx + 0x10c]
push ecx
push ebp
lea eax, [ebx + 0x6c]
push eax
push 3
push 0x58681c
call fcn.0052c3b0
movq xmm0, qword [ebx + 0xec]
movq qword [ebx + 0x11c], xmm0
movq xmm0, qword [ebx + 0xf4]
push 0x5c
movq qword [ebx + 0x124], xmm0
call fcn.0050f3bc
add esp, 4
push 0x5c
mov esi, eax
push 0
push esi
call fcn.00516180
lea edx, [ebx + 0xfc]
add esp, 0xc
push edx
mov ecx, 0x10
mov edx, esi
mov dword [esi], 0x67452301
mov dword [esi + 4], 0xefcdab89
mov dword [esi + 8], 0x98badcfe
mov dword [esi + 0xc], 0x10325476
call fcn.0045fc10
add esp, 4
push ebp
mov ecx, 0x20
mov edx, esi
call fcn.0045fc10
add esp, 4
lea eax, [ebx + 0x6c]
push eax
mov ecx, 0x20
mov edx, esi
call fcn.0045fc10
add esp, 4
push esi
lea ecx, [ebx + 0x12c]
call fcn.0045fd10
add esp, 4
push esi
call fcn.0050f521
movq xmm0, qword [0x5bc0f0]
movq qword [ebx + 0x38], xmm0
movq xmm0, qword [0x5bc0f8]
movq qword [ebx + 0x40], xmm0
mov eax, dword [0x5bc100]
add esp, 4
cmp dword [ebx + 0x28], 0
mov dword [ebx + 0x48], eax
jne 0x5332bc
push 8
call fcn.0050f3bc
xor ecx, ecx
add esp, 4
xor edx, edx
mov word [eax], cx
mov word [eax + 2], dx
mov dword [eax + 4], edx
mov dword [ebx + 0x28], eax
mov eax, dword [ebx + 0x18]
cmp word [eax + 2], 1
jae 0x5336a5
mov ecx, dword [ebx]
mov eax, dword [ecx + 4]
mov edi, dword [eax + 0xcc]
cmp edi, 1
mov edx, dword [ebx + 4]
mov ebp, dword [eax + 0x5c]
mov dword [esp + 0x1c], edi
mov dword [esp + 0x14], edx
jl 0x5336a5
cmp edi, 4
jl 0x5336a5
push 0x10
call fcn.0050f3bc
add esp, 4
mov esi, eax
test ebp, ebp
jne 0x533312
push edi
call fcn.0050f3bc
add esp, 4
mov dword [esi], eax
jmp 0x533314
mov dword [esi], ebp
mov ecx, dword [esi]
mov dword [esi + 4], ecx
mov dword [esi + 0xc], edi
mov dword [esi + 8], edi
movzx edx, byte [ecx + 3]
movzx eax, byte [ecx + 2]
shl edx, 8
add edx, eax
movzx eax, byte [ecx + 1]
shl edx, 8
add edx, eax
movzx eax, byte [ecx]
shl edx, 8
add edx, eax
and edx, 0x7fffffff
sub edx, 1
lea eax, [ecx + 4]
mov dword [esi + 4], eax
je 0x533502
sub edx, 1
jne 0x53369c
sub ecx, eax
add ecx, edi
cmp ecx, 4
jb 0x53369c
movzx ebp, byte [eax + 3]
movzx ecx, byte [eax + 2]
movzx edx, byte [eax + 1]
shl ebp, 8
add ebp, ecx
movzx ecx, byte [eax]
shl ebp, 8
add ebp, edx
add eax, 4
shl ebp, 8
push 8
add ebp, ecx
mov dword [esi + 4], eax
call fcn.0050f3bc
mov edi, eax
lea eax, [ebp*8]
add esp, 4
push eax
mov dword [edi], ebp
mov dword [esp + 0x20], eax
call fcn.0050f3bc
mov edx, dword [esp + 0x20]
add esp, 4
push edx
push 0
push eax
mov dword [edi + 4], eax
call fcn.00516180
mov eax, dword [esp + 0x20]
add esp, 0xc
mov dword [eax + 0xc], edi
mov dword [esp + 0x18], 0
test ebp, ebp
jle 0x53369c
mov ecx, dword [esi]
mov eax, dword [esi + 4]
mov edx, dword [esi + 8]
mov edi, ecx
sub edi, eax
add edi, edx
cmp edi, 4
jb 0x53369c
movzx edi, byte [eax + 3]
movzx edx, byte [eax + 2]
shl edi, 8
add edi, edx
movzx edx, byte [eax + 1]
shl edi, 8
add edi, edx
movzx edx, byte [eax]
add eax, 4
sub ecx, eax
add ecx, dword [esi + 8]
shl edi, 8
add edi, edx
mov dword [esi + 4], eax
cmp ecx, edi
jb 0x53369c
push edi
call fcn.0050f3bc
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + 0xc]
mov ecx, dword [esp + 0x1c]
mov edx, dword [edx + 4]
add ecx, ecx
add ecx, ecx
add ecx, ecx
mov dword [edx + ecx + 4], eax
mov eax, dword [esi + 4]
mov edx, dword [esp + 0x18]
add esp, 4
push edi
push eax
mov eax, dword [edx + 0xc]
mov edx, dword [eax + 4]
mov eax, dword [edx + ecx + 4]
push eax
call fcn.005165f0
add dword [esi + 4], edi
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx + 0xc]
mov ecx, dword [edx + 4]
add eax, eax
add eax, eax
add eax, eax
mov dword [eax + ecx], edi
mov eax, ebp
sub eax, dword [esp + 0x24]
add esp, 0xc
cmp eax, 2
jne 0x5334c2
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0xc]
mov eax, dword [esp + 0x18]
add eax, eax
lea edx, [esp + 0x20]
push edx
mov edx, dword [ecx + 4]
add eax, eax
add eax, eax
add edx, eax
push edx
call fcn.00530970
mov edi, eax
mov eax, dword [esp + 0x20]
test eax, eax
je 0x5334be
push eax
call fcn.0050f521
add esp, 4
mov dword [esp + 0x20], 0
test edi, edi
jmp 0x5334e6
cmp eax, 1
jne 0x5334ec
mov eax, dword [esp + 0x14]
push eax
mov eax, dword [eax + 0xc]
mov ecx, dword [eax + 4]
mov eax, dword [esp + 0x1c]
add eax, eax
add eax, eax
add eax, eax
add ecx, eax
push ecx
call fcn.00530970
test eax, eax
je 0x53369c
mov eax, dword [esp + 0x18]
inc eax
cmp eax, ebp
mov dword [esp + 0x18], eax
jl 0x5333d8
jmp 0x53369c
mov edx, ecx
sub edx, eax
add edx, edi
cmp edx, 0xc
jb 0x53369c
movzx edi, byte [eax + 2]
lea edx, [eax - 4]
mov dword [esp + 0x18], edx
movzx edx, byte [eax + 3]
shl edx, 8
add edx, edi
movzx edi, byte [eax + 1]
shl edx, 8
add edx, edi
movzx edi, byte [eax]
add eax, 4
mov dword [esi + 4], eax
movzx ebp, byte [eax + 3]
shl edx, 8
add edx, edi
movzx edi, byte [eax + 2]
shl ebp, 8
add ebp, edi
movzx edi, byte [eax + 1]
shl ebp, 8
add ebp, edi
movzx edi, byte [eax]
shl ebp, 8
add eax, 4
add ebp, edi
mov dword [esi + 4], eax
cmp edx, 1
jne 0x53369c
cmp ebp, edx
jne 0x53369c
movzx edi, byte [eax + 1]
movzx edx, byte [eax]
shl edi, 8
add edi, edx
lea edx, [eax + 2]
mov dword [esi + 4], edx
cmp edi, 6
jne 0x53369c
movzx eax, byte [edx + 1]
movzx edi, byte [edx]
shl eax, 8
add edx, 2
add eax, edi
mov edi, dword [esp + 0x1c]
sub ecx, edx
add ecx, edi
mov dword [esi + 4], edx
cmp ecx, eax
jb 0x53369c
cmp ecx, 0x14
jb 0x53369c
mov eax, dword [edx]
lea ecx, [edx + 4]
mov dword [esi + 4], ecx
cmp eax, 0x31415352
jne 0x53369c
movzx eax, byte [ecx + 3]
movzx edx, byte [ecx + 2]
mov edi, dword [esp + 0x14]
shl eax, 8
add eax, edx
movzx edx, byte [ecx + 1]
shl eax, 8
add eax, edx
movzx edx, byte [ecx]
add ecx, 0xc
mov dword [esi + 4], ecx
mov ecx, dword [ecx]
mov dword [edi + 8], ecx
add dword [esi + 4], 4
mov ecx, dword [esi + 4]
shl eax, 8
add eax, edx
mov edx, dword [esi + 8]
sub edx, ecx
add edx, dword [esi]
add eax, 0xfffffff8
lea ecx, [eax + 8]
cmp edx, ecx
jb 0x53369c
push eax
mov dword [edi + 4], eax
call fcn.0050f3bc
mov edx, dword [edi + 4]
add esp, 4
mov dword [edi], eax
mov ecx, dword [esi + 4]
push edx
push ecx
push eax
call fcn.005165f0
mov edx, dword [edi + 4]
mov ecx, dword [esi]
add edx, 8
add dword [esi + 4], edx
mov eax, dword [esi + 4]
mov edx, dword [esi + 8]
mov edi, ecx
sub edi, eax
add edi, edx
add esp, 0xc
cmp edi, 4
jb 0x53369c
movzx edx, byte [eax + 1]
movzx edi, byte [eax]
shl edx, 8
mov ebp, eax
sub ebp, dword [esp + 0x18]
add edx, edi
lea edi, [eax + 2]
mov dword [esi + 4], edi
cmp edx, 8
jne 0x53369c
movzx eax, byte [edi + 1]
movzx edx, byte [edi]
add edi, 2
sub ecx, edi
add ecx, dword [esi + 8]
shl eax, 8
add eax, edx
mov dword [esi + 4], edi
cmp ecx, eax
jb 0x53369c
cmp eax, 0x48
jne 0x53369c
mov eax, dword [esp + 0x18]
push esi
push ebp
push eax
mov ecx, 0x48
call fcn.00532700
push esi
call fcn.0050f521
add esp, 4
mov eax, dword [ebx + 4]
mov esi, dword [eax + 4]
mov ecx, dword [eax + 8]
push esi
mov dword [ebx + 0x140], ecx
mov dword [ebx + 0x13c], esi
call fcn.0050f3bc
add esp, 4
push esi
push 0
push eax
mov dword [ebx + 8], eax
call fcn.00516180
mov edx, dword [ebx + 0x13c]
add esp, 0xc
push edx
call fcn.0050f3bc
mov esi, eax
mov eax, dword [ebx + 0x13c]
add esp, 4
push eax
push 0
push esi
call fcn.00516180
mov ecx, dword [ebx + 0x28]
mov edx, 2
mov word [ecx], dx
mov eax, dword [ebx + 0x28]
add esp, 0xc
mov ecx, 0x30
mov word [eax + 2], cx
mov edx, dword [ebx + 0x28]
pop edi
mov dword [edx + 4], esi
pop esi
pop ebp
lea eax, [ecx - 0x2f]
pop ebx
add esp, 0x1c
ret