Function at 0x5b0efc
Capabilities:
Load assembly via iassembly

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
push ebx
push esi
push edi
mov dword [ebp - 8], edx
mov esi, eax
mov eax, dword [esi + 0x7bc]
mov edx, eax
and edx, 0x800001ff
jns 0x5b0f22
dec edx
or edx, 0xfffffe00
inc edx
test edx, edx
jne 0x5b0f5f
add eax, 0x200
add eax, 0xa
shl eax, 2
call fcn.0040279c
mov ebx, eax
mov ecx, dword [esi + 0x7bc]
shl ecx, 2
mov edx, dword [esi + 0x7c0]
mov eax, ebx
call fcn.00408128
mov eax, dword [esi + 0x7c0]
call fcn.004027b4
mov dword [esi + 0x7c0], ebx
mov eax, dword [esi + 0x948]
mov edx, eax
and edx, 0x800001ff
jns 0x5b0f77
dec edx
or edx, 0xfffffe00
inc edx
test edx, edx
jne 0x5b0fb8
add eax, 0x200
add eax, 0xa
imul eax, eax, 0x150
call fcn.0040279c
mov ebx, eax
imul ecx, dword [esi + 0x948], 0x150
mov edx, dword [esi + 0x944]
mov eax, ebx
call fcn.00408128
mov eax, dword [esi + 0x944]
call fcn.004027b4
mov dword [esi + 0x944], ebx
imul eax, dword [esi + 0x948], 0x2a
mov edx, dword [esi + 0x944]
lea eax, [edx + eax*8]
mov dword [ebp - 4], eax
mov edx, dword [ebp - 8]
mov ecx, 0x150
mov eax, dword [ebp - 4]
call fcn.00408128
mov eax, dword [esi + 0x7c0]
mov edx, dword [esi + 0x7bc]
mov ecx, dword [esi + 0x948]
mov dword [eax + edx*4], ecx
mov eax, dword [esi + 0x948]
mov dword [ebp - 0xc], eax
inc dword [esi + 0x948]
inc dword [esi + 0x7bc]
mov ebx, dword [ebp - 4]
mov dword [ebx + 0x70], 0xffffffff
xor eax, eax
mov dword [ebx + 0x78], eax
xor eax, eax
mov dword [ebx + 0x7c], eax
xor eax, eax
mov dword [ebx + 0x94], eax
xor eax, eax
mov dword [ebx + 0x98], eax
xor eax, eax
mov dword [ebx + 0x84], eax
xor eax, eax
mov dword [ebx + 0x88], eax
xor eax, eax
mov dword [ebx + 0x100], eax
xor eax, eax
mov dword [ebx + 0x104], eax
xor eax, eax
mov dword [ebx + 0x108], eax
xor eax, eax
mov dword [ebx + 0x18], eax
xor eax, eax
mov dword [ebx + 0x1c], eax
mov eax, dword [ebp - 8]
mov al, byte [eax + 0x20]
mov byte [ebx + 0x20], al
mov dl, 1
mov eax, dword [0x649754]
call fcn.00403140
mov edi, eax
mov dword [ebx + 0x148], edi
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x148]
mov al, byte [eax + 4]
mov byte [edi + 4], al
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x148]
mov edx, dword [eax + 8]
mov dword [edi + 8], edx
mov edx, dword [eax + 0xc]
mov dword [edi + 0xc], edx
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x148]
mov eax, dword [eax + 0x10]
mov dword [edi + 0x10], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x148]
mov eax, dword [eax + 0x14]
mov dword [edi + 0x14], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x148]
mov eax, dword [eax + 0x18]
mov dword [edi + 0x18], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x148]
mov dx, word [eax + 0x1c]
mov word [edi + 0x1c], dx
mov dl, byte [eax + 0x1e]
mov byte [edi + 0x1e], dl
cmp byte [ebx + 0x10], 0xc
jne 0x5b1115
cmp dword [ebx + 0x14c], 0
je 0x5b1115
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x14c]
mov edx, dword [eax]
call dword [edx + 0x14]
mov edi, eax
mov dword [ebx + 0x14c], edi
mov eax, dword [ebp - 4]
mov dword [edi + 8], eax
mov edx, dword [ebp - 0xc]
mov eax, edi
mov ecx, dword [eax]
call dword [ecx + 8]
cmp byte [ebx + 0x10], 5
je 0x5b112a
cmp byte [ebx + 0x10], 0xa
jne 0x5b113e
cmp byte [ebx + 0xac], 0
je 0x5b113e
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx + 0x70]
mov edx, dword [esi + 0x948]
dec edx
mov eax, esi
call fcn.005b0038
mov al, byte [ebx + 0x10]
cmp al, 6
je 0x5b114d
cmp al, 0xb
je 0x5b114d
cmp al, 0xc
jne 0x5b11bd
mov esi, dword [ebp - 8]
mov esi, dword [esi + 0x78]
test esi, esi
je 0x5b1166
mov eax, dword [ebp - 8]
mov eax, esi
call fcn.0069d04c
mov dword [ebx + 0x78], eax
jmp 0x5b1173
mov eax, 0x5b13d0
call fcn.0069d04c
mov dword [ebx + 0x78], eax
push ebp
call fcn.005b0ebc
pop ecx
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x88]
test eax, eax
jle 0x5b11bd
mov edx, dword [ebp - 8]
mov esi, eax
mov dword [ebx + 0x88], esi
mov eax, esi
shl eax, 4
call fcn.0040279c
mov edi, eax
mov dword [ebx + 0x84], edi
mov ecx, dword [ebx + 0x88]
shl ecx, 4
mov edx, edi
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x84]
call fcn.00402a0c
cmp byte [ebx + 0x10], 0xa
jne 0x5b1285
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x78]
call fcn.0069d04c
mov dword [ebx + 0x78], eax
push ebp
call fcn.005b0ebc
pop ecx
mov eax, dword [ebp - 8]
cmp dword [eax + 0x94], 0
je 0x5b1285
mov eax, dword [ebx + 0x78]
call fcn.00409e50
mov esi, eax
lea eax, [esi + 1]
shl eax, 2
call fcn.0040279c
mov edi, eax
mov dword [ebx + 0x94], edi
mov ecx, esi
shl ecx, 2
mov edx, edi
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x94]
call fcn.00402a0c
mov dl, 1
mov eax, dword [0x410484]
call fcn.00403140
mov dword [ebx + 0x98], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x98]
mov edi, dword [eax + 8]
dec edi
test edi, edi
jl 0x5b1285
inc edi
mov dword [ebp - 0x10], 0
mov eax, 0x118
call fcn.0040279c
mov esi, eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x98]
mov edx, dword [ebp - 0x10]
call fcn.004120b8
mov edx, esi
mov ecx, 0x118
call fcn.00402a0c
mov edx, esi
mov eax, dword [ebx + 0x98]
call fcn.00411f5c
inc dword [ebp - 0x10]
dec edi
jne 0x5b1249
mov al, byte [ebx + 0x10]
cmp al, 7
je 0x5b1290
cmp al, 9
jne 0x5b1297
push ebp
call fcn.005b0ebc
pop ecx
mov esi, dword [ebp - 8]
mov esi, dword [esi + 0xd4]
test esi, esi
je 0x5b12b6
mov eax, dword [ebp - 8]
mov eax, esi
call fcn.0069d04c
mov dword [ebx + 0xd4], eax
jmp 0x5b12c6
mov eax, 0x5b13d0
call fcn.0069d04c
mov dword [ebx + 0xd4], eax
mov al, byte [ebx + 0x10]
cmp al, 1
je 0x5b12ea
cmp al, 7
je 0x5b12ea
cmp al, 8
je 0x5b12ea
cmp al, 0xb
je 0x5b12ea
lea eax, [ebx + 0xc]
push eax
lea ecx, [ebx + 8]
lea edx, [ebx + 4]
mov eax, ebx
call fcn.006a07e8
cmp byte [ebx + 0x10], 8
jne 0x5b1376
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0xe4]
mov dword [ebx + 0xe4], eax
mov dword [ebx + 0xe8], eax
mov eax, dword [ebx + 0xe4]
shl eax, 3
call fcn.0040279c
mov esi, eax
mov dword [ebx + 0xe0], esi
mov ecx, dword [ebx + 0xe4]
shl ecx, 3
mov edx, dword [ebp - 8]
mov edx, dword [edx + 0xe0]
mov eax, esi
call fcn.00408128
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0xec]
mov dword [ebx + 0xec], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0xf0]
mov dword [ebx + 0xf0], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0xf4]
mov dword [ebx + 0xf4], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0xf8]
mov dword [ebx + 0xf8], eax
jmp 0x5b13c6
xor eax, eax
mov dword [ebx + 0xe0], eax
xor eax, eax
mov dword [ebx + 0xe4], eax
xor eax, eax
mov dword [ebx + 0xe8], eax
xor eax, eax
mov dword [ebx + 0xec], eax
xor eax, eax
mov dword [ebx + 0xf0], eax
xor eax, eax
mov dword [ebx + 0xf4], eax
xor eax, eax
mov dword [ebx + 0xf8], eax
lea edx, [ebx + 0x10c]
mov eax, dword [ebp - 8]
add eax, 0x10c
mov ecx, 0x18
call fcn.00402a0c
mov eax, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret