Function at 0x4d9650
Capabilities:
Encode data using base64
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x48
mov eax, dword [0x582830]
push ebx
push ebp
push esi
test eax, eax
push edi
mov dword [esp + 0x18], 0
mov dword [esp + 0x34], 1
jne 0x4d96f5
mov esi, dword [esp + 0x5c]
mov eax, dword [esi + 0x44]
test eax, eax
jne 0x4d96f5
mov ebp, dword [esp + 0x60]
test ebp, ebp
je 0x4d96f5
push 0
push 0
push 0
push 0x15
push esi
call fcn.004dc090
add esp, 0x14
test eax, eax
jne 0x4d96f5
mov eax, dword [ebp + 0x20]
test eax, eax
mov dword [esp + 0x5c], eax
je 0x4d9c10
mov ecx, dword [eax + 0x18]
mov ebx, dword [esp + 0x64]
test ecx, ecx
mov dword [esp + 0x64], ebx
je 0x4d9702
mov ebp, dword [ebp + 0x1c]
cmp ebp, 4
je 0x4d96e1
cmp ebp, 0x2e
je 0x4d96da
cmp ebp, 0x45
je 0x4d96d3
mov eax, str.UNION
jmp 0x4d96e6
mov eax, str.INTERSECT
jmp 0x4d96e6
mov eax, str.EXCEPT
jmp 0x4d96e6
mov eax, str.UNION_ALL
push eax
push str.ORDER_BY_clause_should_come_after__s_not_before
push esi
call fcn.004c4780
add esp, 0xc
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret
mov edi, dword [esi + 0x34]
test edi, edi
jne 0x4d971d
mov eax, dword [esi]
push eax
call fcn.004ba9c0
mov edi, eax
add esp, 4
test edi, edi
mov dword [esi + 0x34], eax
je 0x4d96f5
cmp ebx, 8
jne 0x4d973c
mov ecx, dword [esp + 0x68]
push 0
push ecx
push 0x3f
push edi
call fcn.004baa20
add esp, 0x10
mov dword [esp + 0x64], 7
mov eax, dword [ebp + 0x1c]
lea ecx, [eax - 4]
cmp ecx, 0x75
ja case.0x4d9753.7
xor edx, edx
mov dl, byte [ecx + 0x4daf04]
jmp dword [edx*4 + 0x4daef4]
mov ecx, dword [ebp + 0x18]
test ecx, ecx
jne case.0x4d9753.5
mov eax, dword [esp + 0x68]
mov ebx, dword [esp + 0x64]
mov ecx, dword [esp + 0x5c]
push 0
push 0
push 0
push eax
push ebx
push ecx
push esi
call fcn.004d9650
add esp, 0x1c
test eax, eax
jne 0x4d96fa
mov edx, dword [esp + 0x68]
push eax
push eax
push eax
push edx
push ebx
push ebp
push esi
mov dword [ebp + 0x20], eax
call fcn.004d9650
mov ecx, dword [esp + 0x78]
add esp, 0x1c
test eax, eax
mov dword [ebp + 0x20], ecx
je case.0x4d9753.7
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret
xor edx, edx
mov ecx, dword [esp + 0x64]
cmp eax, 4
sete dl
lea edx, [edx + edx + 5]
mov eax, edx
cmp ecx, eax
mov dword [esp + 0x70], eax
jne 0x4d97db
mov eax, dword [ebp + 0x18]
test eax, eax
jne 0x4d97db
mov ebx, dword [esp + 0x68]
jmp 0x4d9830
mov ebx, dword [esi + 0x48]
lea eax, [ebx + 1]
mov dword [esi + 0x48], eax
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x4d9801
push 1
push ebx
push eax
push ebp
push esi
call fcn.004dbae0
add esp, 0x14
test eax, eax
jne 0x4d96f5
cmp dword [ebp + 0x1c], 4
je 0x4d9822
push 1
push ebx
push 0x3f
push edi
call fcn.004baa20
push 1
push ebx
push 0x4d
push edi
call fcn.004baa20
add esp, 0x20
jmp 0x4d9830
push 0
push ebx
push 0x3f
push edi
call fcn.004baa20
add esp, 0x10
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x5c]
push 0
push 0
push 0
push ebx
push ecx
push edx
push esi
call fcn.004d9650
add esp, 0x1c
test eax, eax
jne 0x4d96fa
mov eax, dword [ebp + 0x1c]
cmp eax, 4
je 0x4d9872
cmp eax, 0x2e
je 0x4d986b
cmp eax, 0x79
jne 0x4d9879
mov eax, 5
jmp 0x4d987d
mov eax, 6
jmp 0x4d987d
mov eax, 7
jmp 0x4d987d
mov eax, dword [esp + 0x68]
mov edx, dword [ebp + 0x18]
xor ecx, ecx
push ecx
push ecx
push ecx
push ebx
push eax
push ebp
push esi
mov dword [ebp + 0x20], ecx
mov dword [esp + 0x88], edx
mov dword [ebp + 0x18], ecx
call fcn.004d9650
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x88]
add esp, 0x1c
mov dword [ebp + 0x20], ecx
test eax, eax
mov dword [ebp + 0x18], edx
jne 0x4d96fa
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x70]
cmp eax, ecx
jne 0x4d98cd
cmp ebx, dword [esp + 0x68]
je case.0x4d9753.7
cmp dword [esp + 0x64], 1
jne 0x4d98f1
mov ecx, dword [ebp + 4]
push ecx
push 0
push esi
call fcn.004db880
mov edx, dword [ebp + 4]
mov eax, dword [ebp + 8]
push edx
push eax
push esi
call fcn.004db770
add esp, 0x18
push edi
call fcn.004baaf0
push edi
mov dword [esp + 0x78], eax
call fcn.004baaf0
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x74], eax
push ecx
push ebx
push 0x54
push edi
call fcn.004baa20
push edi
call fcn.004babd0
mov edx, dword [ebp + 0x18]
mov dword [esp + 0x90], eax
push edx
push ebp
call fcn.004dbd50
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x90]
mov eax, dword [ebp + 4]
push ecx
mov ecx, dword [esp + 0x90]
push edx
mov edx, dword [esp + 0x90]
push ecx
mov ecx, dword [ebp + 0x18]
push edx
mov edx, dword [eax]
push 0xffffffffffffffff
push ecx
push edx
push ebx
push eax
push ebp
push esi
call fcn.004db090
add esp, 0x50
test eax, eax
jne 0x4d96f5
mov eax, dword [esp + 0x6c]
push eax
push edi
call fcn.004bab60
mov ecx, dword [esp + 0x7c]
push ecx
push ebx
push 0x56
push edi
call fcn.004baa20
mov edx, dword [esp + 0x88]
push edx
push edi
call fcn.004bab60
push 0
push ebx
push 0x41
push edi
call fcn.004baa20
mov eax, dword [ebp + 0x18]
add esp, 0x30
test eax, eax
je case.0x4d9753.7
mov eax, dword [esp + 0x68]
mov edx, dword [ebp + 4]
mov ecx, dword [esp + 0x64]
push eax
mov eax, dword [edx]
push ecx
push eax
jmp 0x4d9b72
mov ebx, dword [esi + 0x48]
lea ecx, [ebx + 2]
mov dword [esi + 0x48], ecx
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x4d99e5
push 1
push ebx
push eax
push ebp
push esi
call fcn.004dbae0
add esp, 0x14
test eax, eax
jne 0x4d96f5
push 1
push ebx
push 0x3f
push edi
call fcn.004baa20
push 1
push ebx
push 0x4d
push edi
call fcn.004baa20
mov edx, dword [esp + 0x7c]
push 0
push 0
push 0
push ebx
push 5
push edx
push esi
call fcn.004d9650
add esp, 0x3c
test eax, eax
jne 0x4d96fa
lea eax, [ebx + 1]
push 1
push eax
push 0x3f
push edi
call fcn.004baa20
lea eax, [ebx + 1]
push 1
push eax
push 0x4d
push edi
call fcn.004baa20
push 0
push 0
lea eax, [ebx + 1]
push 0
push eax
push 5
push ebp
push esi
mov dword [ebp + 0x20], 0
call fcn.004d9650
mov ecx, dword [esp + 0x98]
add esp, 0x3c
test eax, eax
mov dword [ebp + 0x20], ecx
jne 0x4d96fa
cmp dword [esp + 0x64], 1
jne 0x4d9a89
mov edx, dword [ebp + 4]
push edx
push 0
push esi
call fcn.004db880
mov eax, dword [ebp + 4]
mov ecx, dword [ebp + 8]
push eax
push ecx
push esi
call fcn.004db770
add esp, 0x18
push edi
call fcn.004baaf0
push edi
mov dword [esp + 0x74], eax
call fcn.004baaf0
mov edx, dword [esp + 0x74]
mov dword [esp + 0x78], eax
push edx
push ebx
push 0x54
push edi
call fcn.004baa20
push 0
push ebx
push 0x51
push edi
call fcn.004baa20
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x98]
push eax
lea eax, [ebx + 1]
push eax
push 0x45
push edi
call fcn.004baa20
mov ecx, dword [ebp + 0x18]
push ecx
push ebp
call fcn.004dbd50
mov edx, dword [esp + 0xac]
mov ecx, dword [esp + 0xb0]
mov eax, dword [ebp + 4]
add esp, 0x40
push edx
mov edx, dword [esp + 0x6c]
push ecx
mov ecx, dword [esp + 0x6c]
push edx
mov edx, dword [ebp + 0x18]
push ecx
mov ecx, dword [eax]
push 0xffffffffffffffff
push edx
push ecx
push ebx
push eax
push ebp
push esi
call fcn.004db090
add esp, 0x2c
test eax, eax
jne 0x4d96f5
mov edx, dword [esp + 0x70]
push edx
push edi
call fcn.004bab60
mov eax, dword [esp + 0x7c]
push eax
push ebx
push 0x56
push edi
call fcn.004baa20
mov ecx, dword [esp + 0x84]
push ecx
push edi
call fcn.004bab60
lea eax, [ebx + 1]
push 0
push eax
push 0x41
push edi
call fcn.004baa20
push 0
push ebx
push 0x41
push edi
call fcn.004baa20
mov eax, dword [ebp + 0x18]
add esp, 0x40
test eax, eax
je case.0x4d9753.7
mov edx, dword [esp + 0x68]
mov ecx, dword [ebp + 4]
mov eax, dword [esp + 0x64]
push edx
mov edx, dword [ecx]
push eax
push edx
push edi
push ebp
call fcn.004db5a0
add esp, 0x14
mov ecx, dword [esp + 0x5c]
mov eax, dword [ebp + 4]
mov edx, dword [ecx + 4]
mov eax, dword [eax]
cmp eax, dword [edx]
je 0x4d9bde
mov ebp, dword [ebp + 0x1c]
cmp ebp, 4
je 0x4d9bce
cmp ebp, 0x2e
je 0x4d9bbe
cmp ebp, 0x45
je 0x4d9bae
mov eax, str.UNION
push eax
push str.SELECTs_to_the_left_and_right_of__s_do_not_have_the_same_number_of_result_columns
jmp 0x4d96ec
mov eax, str.INTERSECT
push eax
push str.SELECTs_to_the_left_and_right_of__s_do_not_have_the_same_number_of_result_columns
jmp 0x4d96ec
mov eax, str.EXCEPT
push eax
push str.SELECTs_to_the_left_and_right_of__s_do_not_have_the_same_number_of_result_columns
jmp 0x4d96ec
mov eax, str.UNION_ALL
push eax
push str.SELECTs_to_the_left_and_right_of__s_do_not_have_the_same_number_of_result_columns
jmp 0x4d96ec
cmp dword [esp + 0x64], 1
jne 0x4d9c06
mov cl, byte [esi + 0x3e]
test cl, cl
je 0x4d9bf8
mov ecx, dword [esi]
mov dl, byte [ecx + 0xc8]
test dl, dl
jns 0x4d9c06
push 0
push eax
push 0xd
push edi
call fcn.004baa20
add esp, 0x10
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x48
ret
mov edx, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp + 8]
mov dword [esp + 0x1c], edx
mov edx, dword [ebp + 0x14]
mov dword [esp + 0x60], ecx
mov ecx, dword [ebp]
push eax
push esi
mov dword [esp + 0x28], eax
mov dword [esp + 0x34], edx
mov dword [esp + 0x44], ecx
call fcn.004c9110
mov eax, dword [esi + 0x44]
add esp, 8
test eax, eax
jg 0x4daed0
push ebp
push esi
call fcn.004d8d20
add esp, 8
test eax, eax
jne 0x4daed0
mov eax, dword [ebp + 4]
mov edx, dword [ebp + 0xc]
test eax, eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x5c], eax
je 0x4daed0
mov eax, dword [esp + 0x64]
cmp eax, 2
je 0x4d9c7e
cmp eax, 3
jne 0x4d9c9a
mov ebx, dword [esp + 0x5c]
cmp dword [ebx], 1
jle 0x4d9c9e
push str.only_a_single_result_allowed_for_a_SELECT_that_is_part_of_an_expression
push esi
call fcn.004c4780
add esp, 8
jmp 0x4daed0
mov ebx, dword [esp + 0x5c]
cmp eax, 5
jl 0x4d9cb5
cmp eax, 6
jle 0x4d9cad
cmp eax, 9
jne 0x4d9cb5
mov dword [esp + 0x1c], 0
mov eax, dword [ebx]
mov dword [esp + 0x14], 0
test eax, eax
jle 0x4d9d1d
xor edi, edi
mov eax, dword [ebx + 4]
mov edx, dword [esp + 0x20]
mov ecx, dword [edi + eax]
push ecx
push 0
push edx
push esi
call fcn.004ccd20
add esp, 0x10
test eax, eax
jne 0x4daed0
mov ecx, dword [esp + 0x5c]
lea eax, [esp + 0x18]
push eax
push 1
mov edx, dword [ecx + 4]
mov eax, dword [edi + edx]
push eax
push esi
call fcn.004cd820
add esp, 0x10
test eax, eax
jne 0x4daed0
mov ebx, dword [esp + 0x5c]
mov eax, dword [esp + 0x14]
inc eax
add edi, 0xc
mov ecx, dword [ebx]
mov dword [esp + 0x14], eax
cmp eax, ecx
jl 0x4d9cc5
mov eax, dword [esp + 0x30]
test eax, eax
je 0x4d9d65
mov ecx, dword [esp + 0x20]
mov edi, eax
push edi
push ebx
push ecx
push esi
call fcn.004ccd20
add esp, 0x10
test eax, eax
jne 0x4daed0
push eax
push eax
push edi
push esi
call fcn.004cd820
add esp, 0x10
test eax, eax
jne 0x4daed0
mov edx, dword [esp + 0x20]
push edi
push edx
call fcn.004daf80
mov ebx, dword [esp + 0x64]
add esp, 8
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4d9dc1
mov eax, dword [esp + 0x60]
test eax, eax
jne 0x4d9d88
push str.a_GROUP_BY_clause_is_required_before_HAVING
push esi
call fcn.004c4780
add esp, 8
jmp 0x4daed0
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x20]
push edi
push ebx
push eax
push esi
call fcn.004ccd20
add esp, 0x10
test eax, eax
jne 0x4daed0
lea ecx, [esp + 0x18]
push ecx
push 1
push edi
push esi
call fcn.004cd820
add esp, 0x10
test eax, eax
jne 0x4daed0
mov ebx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x1c]
xor eax, eax
cmp ecx, eax
je 0x4d9ede
mov edx, dword [ecx]
mov dword [esp + 0x14], eax
cmp edx, eax
jle 0x4d9ede
mov dword [esp + 0x24], eax
mov edx, dword [ecx + 4]
mov eax, dword [esp + 0x24]
lea ecx, [esp + 0x28]
mov edi, dword [eax + edx]
push ecx
push edi
call fcn.004ccbb0
add esp, 8
test eax, eax
je 0x4d9e3e
mov eax, dword [esp + 0x28]
test eax, eax
jle 0x4d9e3e
cmp eax, dword [ebx]
jg 0x4d9e3e
push edi
call fcn.004cc1d0
mov eax, dword [esp + 0x2c]
lea edx, [eax + eax*2]
mov eax, dword [ebx + 4]
mov ecx, dword [eax + edx*4 - 0xc]
push ecx
call fcn.004cc2a0
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x2c]
add esp, 8
mov edx, dword [edx + 4]
mov dword [ecx + edx], eax
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 4]
mov edi, dword [ecx + edx]
mov eax, dword [esp + 0x20]
push edi
push ebx
push eax
push esi
call fcn.004ccd20
add esp, 0x10
test eax, eax
jne 0x4daed0
mov ecx, dword [esp + 0x18]
push eax
push ecx
push edi
push esi
call fcn.004cd820
add esp, 0x10
test eax, eax
jne 0x4daed0
push edi
call fcn.004cca80
add esp, 4
test eax, eax
je 0x4d9eb8
lea edx, [esp + 0x28]
push edx
push edi
call fcn.004ccbb0
add esp, 8
test eax, eax
je 0x4d9fc8
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x5c]
test eax, eax
jle 0x4d9ea1
cmp eax, dword [ebx]
jle 0x4d9ebc
mov ecx, dword [ebx]
push ecx
push eax
push str.ORDER_BY_column_number__d_out_of_range___should_be_between_1_and__d
push esi
call fcn.004c4780
add esp, 0x10
jmp 0x4daed0
mov ebx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x24]
inc eax
mov edx, dword [ecx]
add edi, 0xc
cmp eax, edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x24], edi
jl 0x4d9de1
mov eax, dword [esp + 0x60]
xor ecx, ecx
cmp eax, ecx
je 0x4da001
mov edx, dword [eax]
mov dword [esp + 0x14], ecx
cmp edx, ecx
jle 0x4da001
mov dword [esp + 0x24], ecx
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x24]
mov eax, dword [edx + 4]
lea edx, [esp + 0x28]
push edx
mov edi, dword [ecx + eax]
push edi
call fcn.004ccbb0
add esp, 8
test eax, eax
je 0x4d9f5b
mov eax, dword [esp + 0x28]
test eax, eax
jle 0x4d9f5b
cmp eax, dword [ebx]
jg 0x4d9f5b
push edi
call fcn.004cc1d0
mov eax, dword [esp + 0x2c]
mov ecx, dword [ebx + 4]
lea eax, [eax + eax*2]
mov edx, dword [ecx + eax*4 - 0xc]
push edx
call fcn.004cc2a0
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x2c]
add esp, 8
mov edi, dword [ecx + 4]
mov dword [edx + edi], eax
mov eax, dword [ecx + 4]
mov edi, dword [edx + eax]
mov ecx, dword [esp + 0x20]
push edi
push ebx
push ecx
push esi
call fcn.004ccd20
add esp, 0x10
test eax, eax
jne 0x4daed0
mov edx, dword [esp + 0x18]
push eax
push edx
push edi
push esi
call fcn.004cd820
add esp, 0x10
test eax, eax
jne 0x4daed0
push edi
call fcn.004cca80
add esp, 4
test eax, eax
je 0x4d9fdb
lea eax, [esp + 0x28]
push eax
push edi
call fcn.004ccbb0
add esp, 8
test eax, eax
je 0x4da08c
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x5c]
test eax, eax
jle 0x4da09f
cmp eax, dword [ebx]
jg 0x4da09f
jmp 0x4d9fdf
push str.ORDER_BY_terms_must_not_be_non_integer_constants
push esi
call fcn.004c4780
add esp, 8
jmp 0x4daed0
mov ebx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x24]
inc eax
mov edx, dword [ecx]
add edi, 0xc
cmp eax, edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x24], edi
jl 0x4d9efe
mov eax, dword [ebp + 0x10]
test eax, eax
jne 0x4da1ed
mov eax, dword [ebp + 0x14]
test eax, eax
jne 0x4da1ed
mov eax, dword [ebp + 0xc]
test eax, eax
jne 0x4da1ed
mov eax, dword [ebp + 8]
cmp dword [eax], 1
jne 0x4da1ed
mov eax, dword [ebp + 4]
cmp dword [eax], 1
jne 0x4da1ed
mov ecx, dword [eax + 4]
mov edi, dword [ecx]
cmp byte [edi], 3
jne 0x4da1ed
mov eax, dword [edi + 0xc]
test eax, eax
je 0x4da1ed
cmp dword [eax], 1
jne 0x4da1ed
mov edx, dword [edi + 0x14]
and edx, 0xfffffffe
cmp edx, 6
jne 0x4da1ed
mov eax, dword [edi + 0x10]
push 3
push 0x54116c
push eax
call fcn.004c4c50
add esp, 0xc
test eax, eax
jne 0x4da0b6
mov dword [esp + 0x28], 0x54
jmp 0x4da0d9
push str.GROUP_BY_terms_must_not_be_non_integer_constants
push esi
call fcn.004c4780
add esp, 8
jmp 0x4daed0
mov edx, dword [ebx]
push edx
push eax
push str.GROUP_BY_column_number__d_out_of_range___should_be_between_1_and__d
push esi
call fcn.004c4780
add esp, 0x10
jmp 0x4daed0
mov ecx, dword [edi + 0x10]
push 3
push 0x541170
push ecx
call fcn.004c4c50
add esp, 0xc
test eax, eax
jne 0x4da1ed
mov dword [esp + 0x28], 0x53
mov edx, dword [edi + 0xc]
mov eax, dword [edx + 4]
mov eax, dword [eax]
mov dword [esp + 0x38], eax
cmp byte [eax], 0x15
jne 0x4da1ed
mov ecx, dword [ebp + 8]
mov eax, dword [eax + 0x24]
test eax, eax
mov edx, dword [ecx + 0x10]
mov dword [esp + 0x24], edx
jge 0x4da1d0
xor ebx, ebx
mov edi, dword [esi + 0x34]
test edi, edi
jne 0x4da124
mov eax, dword [esi]
push eax
call fcn.004ba9c0
mov edi, eax
add esp, 4
test edi, edi
mov dword [esi + 0x34], eax
je 0x4da1ed
cmp dword [esp + 0x64], 1
jne 0x4da14a
mov ecx, dword [ebp + 4]
mov edx, dword [ebp + 8]
push ecx
push edx
push esi
call fcn.004db880
mov eax, dword [ebp + 4]
mov ecx, dword [ebp + 8]
push eax
push ecx
push esi
call fcn.004db770
add esp, 0x18
mov eax, dword [esp + 0x24]
xor edx, edx
mov dl, byte [eax + 0x1d]
push edx
push esi
call fcn.004c9540
mov ecx, dword [ebp + 8]
xor eax, eax
push 0
mov edx, dword [ecx + 0x1c]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x7c], edx
mov al, byte [ecx + 0x1d]
push eax
push 5
push edi
call fcn.004baa20
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x88]
mov eax, dword [edx + 0x14]
push eax
push ecx
push 0x3d
push edi
call fcn.004baa20
mov edx, dword [esp + 0x4c]
push 0xfffffffffffffffe
mov eax, dword [edx]
push eax
push 0xffffffffffffffff
push edi
call fcn.004bad20
push edi
call fcn.004baaf0
add esp, 0x3c
mov dword [esp + 0x6c], eax
test ebx, ebx
push 0
jne 0x4da24c
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x2c]
push ecx
push edx
push edi
call fcn.004baa20
add esp, 0x10
jmp 0x4da2c4
mov ecx, dword [esp + 0x24]
mov ebx, dword [ecx + 0x10]
test ebx, ebx
je 0x4da1ed
mov edx, dword [ebx + 8]
cmp dword [edx], eax
je 0x4da105
mov ebx, dword [ebx + 0x18]
test ebx, ebx
jne 0x4da1db
mov edi, dword [esi + 0x34]
test edi, edi
mov dword [esp + 0x10], edi
jne 0x4da214
mov edx, dword [esi]
push edx
call fcn.004ba9c0
mov edi, eax
add esp, 4
test edi, edi
mov dword [esi + 0x34], eax
mov dword [esp + 0x10], edi
je 0x4daed0
cmp dword [esp + 0x64], 1
jne 0x4da22e
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x20]
push eax
push ecx
push esi
call fcn.004db880
add esp, 0xc
mov eax, dword [ebp + 0x24]
test eax, eax
jg 0x4da32f
mov dword [ebp + 0x24], 0xffffffff
mov dword [ebp + 0x28], 0
jmp 0x4da393
xor eax, eax
mov al, byte [ebx + 0x16]
push eax
push 5
push edi
call fcn.004baa20
mov ecx, dword [esp + 0x80]
mov edx, dword [ebx + 0x10]
push edx
lea eax, [ecx + 1]
push eax
push 0x3d
push edi
call fcn.004baa20
mov eax, dword [ebx]
push 0xfffffffffffffffe
push eax
push 0xffffffffffffffff
push edi
call fcn.004bad20
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0x58]
push 0
lea ebx, [ecx + 1]
push ebx
push edx
push edi
call fcn.004baa20
add esp, 0x40
push 0
push ebx
push 0x59
push edi
call fcn.004baa20
push 0
push ebx
push 0x41
push edi
call fcn.004baa20
mov eax, dword [esp + 0x90]
push 0
push eax
push 0x43
push edi
call fcn.004baa20
add esp, 0x30
mov ebx, dword [esp + 0x6c]
xor ecx, ecx
mov dword [esp + 0x4c], ecx
mov eax, dword [esp + 0x38]
mov dword [esp + 0x50], ecx
lea edx, [esp + 0x4c]
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x64]
push ebx
push ebx
push ecx
push edx
push 0xffffffffffffffff
mov dword [esp + 0x60], eax
push 0
push 0
lea eax, [esp + 0x60]
push 0
push eax
push ebp
push esi
mov dword [esp + 0x70], 1
call fcn.004db090
push ebx
push edi
call fcn.004bab60
mov ecx, dword [esp + 0xa4]
push 0
push ecx
push 0x41
push edi
call fcn.004baa20
add esp, 0x44
jmp 0x4daec8
mov ebx, dword [esi + 0x4c]
push 0
lea edx, [ebx + 1]
mov dword [esi + 0x4c], edx
mov eax, dword [ebp + 0x24]
neg eax
push eax
push 5
push edi
call fcn.004baa20
push 1
push ebx
push 0x72
push edi
call fcn.004baa20
mov eax, dword [ebp + 0x28]
add esp, 0x20
test eax, eax
mov dword [ebp + 0x24], ebx
jg 0x4da369
mov dword [ebp + 0x28], 0
jmp 0x4da393
mov ebx, dword [esi + 0x4c]
push 0
lea ecx, [ebx + 1]
mov dword [esi + 0x4c], ecx
mov edx, dword [ebp + 0x28]
neg edx
push edx
push 5
push edi
call fcn.004baa20
push 1
push ebx
push 0x72
push edi
call fcn.004baa20
add esp, 0x20
mov dword [ebp + 0x28], ebx
mov eax, dword [esp + 0x20]
xor edi, edi
mov dword [esp + 0x14], edi
cmp dword [eax], edi
jle 0x4da448
mov ecx, dword [edi + eax + 0x14]
lea edx, [edi + eax + 0x14]
test ecx, ecx
je 0x4da42e
mov ecx, dword [edi + eax + 8]
test ecx, ecx
je 0x4da3ca
mov ebx, dword [esi + 0x5c]
mov dword [esi + 0x5c], ecx
mov dword [esp + 0x38], ebx
mov ebx, 1
jmp 0x4da3cc
xor ebx, ebx
mov eax, dword [edi + eax + 0x1c]
lea ecx, [esp + 0x18]
push ecx
mov ecx, dword [esp + 0x18]
push ecx
mov ecx, dword [edx]
push ebp
push eax
push 8
push ecx
push esi
call fcn.004d9650
add esp, 0x1c
test ebx, ebx
je 0x4da3f5
mov edx, dword [esp + 0x38]
mov dword [esi + 0x5c], edx
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x64]
cmp ecx, 5
je 0x4da419
cmp ecx, 6
je 0x4da419
cmp ecx, 9
je 0x4da419
mov edx, dword [ebp + 0x18]
mov dword [esp + 0x1c], edx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0x14]
mov dword [esp + 0x60], ecx
mov ecx, dword [ebp]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x14]
mov edx, dword [eax]
inc ecx
add edi, 0x24
cmp ecx, edx
mov dword [esp + 0x14], ecx
jl 0x4da3a5
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x4da48b
mov eax, dword [esp + 0x74]
test eax, eax
je 0x4da48b
mov ecx, dword [eax]
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x38], ecx
mov ebx, dword [eax + 8]
mov eax, dword [esp + 0x70]
mov dword [esp + 0x44], edx
lea eax, [eax + eax*8]
shl eax, 2
mov dword [esp + 0x28], eax
mov eax, dword [ebx + eax + 0x14]
test ecx, ecx
mov dword [esp + 0x14], eax
je 0x4da4b0
test edx, edx
je 0x4da4b9
mov eax, dword [esp + 0x64]
cmp eax, 1
jne 0x4da909
mov ebx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x20]
push ebx
push ecx
push esi
call fcn.004db770
add esp, 0xc
jmp 0x4da928
test edx, edx
je 0x4da4b9
cmp dword [ebx], 1
jg 0x4da48b
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 8]
mov dword [esp + 0x40], eax
mov eax, dword [eax]
test eax, eax
mov dword [esp + 0x24], eax
je 0x4da48b
mov eax, ecx
cmp dword [eax], 0
jne 0x4da4dc
mov ecx, dword [eax + 0x24]
test ecx, ecx
jl 0x4da4e9
cmp dword [ebx], 1
jg 0x4da48b
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x4da48b
mov eax, dword [esp + 0x6c]
cmp dword [eax], 0
jne 0x4da4f9
mov ecx, dword [eax + 0x24]
test ecx, ecx
jl 0x4da501
test edx, edx
jne 0x4da48b
mov eax, dword [esp + 0x6c]
mov ecx, dword [eax + 0x18]
test ecx, ecx
je 0x4da517
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x18]
test eax, eax
jne 0x4da48b
mov ecx, dword [esp + 0x24]
mov al, 0x10
cmp ecx, 1
jle 0x4da538
mov ecx, dword [esp + 0x70]
test ecx, ecx
jle 0x4da559
mov ecx, dword [esp + 0x28]
test byte [ebx + ecx - 0xc], al
jne 0x4da48b
mov ecx, dword [esp + 0x70]
test ecx, ecx
jle 0x4da559
mov edi, dword [esp + 0x28]
test byte [ebx + edi - 0xc], al
je 0x4da55d
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0xc]
test eax, eax
jne 0x4da48b
mov edi, dword [esp + 0x28]
mov eax, dword [ebx + edi + 0x1c]
mov ecx, dword [ebx + edi + 0x18]
mov dword [esp + 0x68], eax
mov eax, dword [ebx + edi + 0x10]
test eax, eax
mov dword [esp + 0x5c], ecx
je 0x4da587
mov cl, byte [eax + 0x1e]
test cl, cl
je 0x4da587
push eax
push 0
call fcn.004c64b0
add esp, 8
mov edx, dword [ebx + edi + 4]
push edx
call fcn.004c4480
mov eax, dword [ebx + edi + 8]
push eax
call fcn.004c4480
mov ecx, dword [ebx + edi + 0xc]
push ecx
call fcn.004c4480
mov eax, dword [esp + 0x30]
add esp, 0xc
cmp eax, 1
jle 0x4da60e
cmp eax, 1
lea edi, [eax - 1]
jle 0x4da5ce
lea esi, [eax - 1]
push 0
push 0
push ebx
call fcn.004c8ff0
add esp, 0xc
dec esi
mov ebx, eax
jne 0x4da5bc
mov edx, dword [esp + 0x6c]
mov dword [edx + 8], ebx
mov eax, dword [ebx]
mov edx, dword [esp + 0x70]
dec eax
mov ecx, eax
sub ecx, edi
cmp ecx, edx
jl 0x4da60e
mov edx, ecx
lea eax, [eax + eax*8]
lea ecx, [ecx + ecx*8]
lea eax, [ebx + eax*4 + 4]
lea ebp, [ebx + ecx*4 + 4]
mov ecx, 9
mov esi, ebp
mov edi, eax
sub eax, 0x24
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x70]
dec edx
sub ebp, 0x24
cmp edx, ecx
jge 0x4da5f4
mov eax, dword [esp + 0x24]
test eax, eax
jle 0x4da654
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x24]
add edx, 4
lea ebp, [ebx + eax + 4]
mov dword [esp + 0x64], ecx
mov ecx, 9
mov esi, edx
mov edi, ebp
xor eax, eax
rep movsd dword es:[edi], dword [esi]
mov ecx, 9
mov edi, edx
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x64]
add ebp, 0x24
add edx, 0x24
dec eax
mov dword [esp + 0x64], eax
jne 0x4da62d
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x6c]
add eax, edx
mov edx, dword [esp + 0x5c]
lea ecx, [eax + eax*8]
mov eax, dword [esp + 0x14]
mov dword [ebx + ecx*4 - 0xc], edx
mov edi, dword [esi + 4]
mov ecx, dword [eax + 4]
test edi, edi
mov dword [esp + 0x64], ecx
je 0x4da6ac
mov eax, dword [edi]
xor ebx, ebx
test eax, eax
jle 0x4da6ac
xor ebp, ebp
mov edx, dword [esp + 0x64]
mov ecx, dword [edi + 4]
mov eax, dword [esp + 0x68]
push edx
mov edx, dword [ecx + ebp]
push eax
push edx
call fcn.004dbdf0
mov eax, dword [edi]
add esp, 0xc
inc ebx
add ebp, 0xc
cmp ebx, eax
jl 0x4da689
mov edi, dword [esi + 4]
xor ebp, ebp
cmp dword [edi], 0
jle 0x4da6ed
xor ebx, ebx
mov eax, dword [edi + 4]
add eax, ebx
mov ecx, dword [eax + 4]
test ecx, ecx
jne 0x4da6e3
mov eax, dword [eax]
mov ecx, dword [eax + 0x18]
test ecx, ecx
je 0x4da6e3
mov edx, dword [eax + 0x1c]
shr edx, 1
push edx
push ecx
call fcn.004c4570
mov ecx, dword [edi + 4]
add esp, 8
mov dword [ecx + ebx + 4], eax
mov eax, dword [edi]
inc ebp
add ebx, 0xc
cmp ebp, eax
jl 0x4da6b8
mov eax, dword [esp + 0x38]
test eax, eax
je 0x4da74d
mov edx, dword [esp + 0x14]
mov edi, dword [esi + 0x10]
test edi, edi
mov eax, dword [edx + 4]
mov dword [esp + 0x64], eax
je 0x4da734
mov eax, dword [edi]
xor ebx, ebx
test eax, eax
jle 0x4da734
xor ebp, ebp
mov ecx, dword [esp + 0x64]
mov eax, dword [edi + 4]
mov edx, dword [esp + 0x68]
push ecx
mov ecx, dword [eax + ebp]
push edx
push ecx
call fcn.004dbdf0
mov eax, dword [edi]
add esp, 0xc
inc ebx
add ebp, 0xc
cmp ebx, eax
jl 0x4da711
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x68]
mov eax, dword [edx + 4]
mov edx, dword [esi + 0x14]
push eax
push ecx
push edx
call fcn.004dbdf0
add esp, 0xc
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x18]
test eax, eax
je 0x4da764
mov dword [esi + 0x18], eax
mov dword [ecx + 0x18], 0
jmp 0x4da7a3
mov edi, dword [esi + 0x18]
test edi, edi
je 0x4da7a3
mov eax, dword [esp + 0x14]
xor ebx, ebx
mov ecx, dword [eax + 4]
mov eax, dword [edi]
test eax, eax
mov dword [esp + 0x64], ecx
jle 0x4da7a3
xor ebp, ebp
mov edx, dword [esp + 0x64]
mov ecx, dword [edi + 4]
mov eax, dword [esp + 0x68]
push edx
mov edx, dword [ecx + ebp]
push eax
push edx
call fcn.004dbdf0
mov eax, dword [edi]
add esp, 0xc
inc ebx
add ebp, 0xc
cmp ebx, eax
jl 0x4da780
mov edi, dword [esp + 0x14]
mov eax, dword [edi + 0xc]
test eax, eax
je 0x4da7bb
push eax
call fcn.004cc2a0
add esp, 4
mov ebx, eax
jmp 0x4da7bd
xor ebx, ebx
mov eax, dword [esp + 0x44]
test eax, eax
mov eax, dword [esi + 0xc]
je 0x4da819
mov edx, dword [esp + 0x68]
mov dword [esi + 0x14], eax
mov dword [esi + 0xc], ebx
mov ecx, dword [edi + 4]
push ecx
push edx
push eax
call fcn.004dbdf0
mov eax, dword [edi + 0x14]
add esp, 0xc
test eax, eax
je 0x4da808
push eax
call fcn.004cc2a0
mov ecx, dword [esi + 0x14]
add esp, 4
test ecx, ecx
je 0x4da805
push 0
push eax
push ecx
push 5
call fcn.004cbdf0
add esp, 0x10
mov dword [esi + 0x14], eax
mov ecx, dword [edi + 0x10]
push ecx
call fcn.004cc3a0
add esp, 4
mov dword [esi + 0x10], eax
jmp 0x4da84c
test eax, eax
jne 0x4da822
mov dword [esi + 0xc], ebx
jmp 0x4da84c
mov edx, dword [edi + 4]
mov ecx, dword [esp + 0x68]
push edx
push ecx
push eax
call fcn.004dbdf0
add esp, 0xc
test ebx, ebx
je 0x4da84c
mov edx, dword [esi + 0xc]
push 0
push ebx
push edx
push 5
call fcn.004cbdf0
add esp, 0x10
mov dword [esi + 0xc], eax
cmp dword [esi], 0
jne 0x4da85a
cmp dword [edi], 0
jne 0x4da85a
xor eax, eax
jmp 0x4da85f
mov eax, 1
mov dword [esi], eax
mov ecx, dword [edi + 0x24]
test ecx, ecx
jl 0x4da88a
mov ebx, dword [esi + 0x24]
test ebx, ebx
jge 0x4da874
mov dword [esi + 0x24], ecx
jmp 0x4da88a
mov eax, dword [edi + 0x28]
mov edx, dword [esi + 0x28]
add ebx, edx
lea ebp, [eax + ecx]
cmp ebx, ebp
jle 0x4da88a
sub eax, edx
add eax, ecx
mov dword [esi + 0x24], eax
mov eax, dword [edi + 0x28]
mov ecx, dword [esi + 0x28]
add ecx, eax
mov dword [esi + 0x28], ecx
mov ecx, dword [edi + 4]
push ecx
call fcn.004cc9a0
mov edx, dword [edi + 8]
push edx
call fcn.004c9210
mov eax, dword [edi + 0xc]
push eax
call fcn.004cc1d0
mov ecx, dword [edi + 0x10]
push ecx
call fcn.004cc9a0
mov edx, dword [edi + 0x14]
push edx
call fcn.004cc1d0
mov eax, dword [edi + 0x18]
push eax
call fcn.004cc9a0
mov ecx, dword [edi + 0x20]
push ecx
call fcn.004d8b90
mov edx, dword [edi + 0x2c]
push edx
call fcn.004c4480
push edi
call fcn.004c4480
mov eax, dword [esp + 0x3c]
add esp, 0x24
test eax, eax
je 0x4d96f5
mov eax, dword [esp + 0x74]
pop edi
pop esi
pop ebp
mov dword [eax], 1
mov eax, 1
pop ebx
add esp, 0x48
ret
cmp eax, 8
jne 0x4da924
mov edx, dword [esp + 0x68]
mov eax, dword [esp + 0x10]
push 0
push edx
push 0x3f
push eax
call fcn.004baa20
add esp, 0x10
mov ebx, dword [esp + 0x5c]
mov ecx, dword [esi + 0x58]
push ecx
call fcn.004c4480
mov ecx, dword [esp + 0x1c]
xor eax, eax
add esp, 4
cmp ecx, eax
mov dword [esi + 0x58], eax
mov dword [esi + 0x54], eax
mov byte [esi + 0x3c], al
jne 0x4da951
cmp dword [esp + 0x60], eax
je 0x4daabd
mov dword [esp + 0x18], 1
mov eax, dword [ebx]
xor edi, edi
cmp eax, edi
jle 0x4da993
mov dword [esp + 0x70], edi
mov edx, dword [ebx + 4]
mov eax, dword [esp + 0x70]
mov ecx, dword [edx + eax]
push ecx
push esi
call fcn.004ceea0
add esp, 8
test eax, eax
jne 0x4daed0
mov ecx, dword [esp + 0x70]
mov eax, dword [ebx]
inc edi
add ecx, 0xc
cmp edi, eax
mov dword [esp + 0x70], ecx
jl 0x4da965
mov eax, dword [esp + 0x60]
test eax, eax
je 0x4da9ce
mov edx, eax
xor ebx, ebx
cmp dword [edx], 0
jle 0x4da9ce
xor edi, edi
mov eax, dword [esp + 0x60]
mov ecx, dword [eax + 4]
mov edx, dword [ecx + edi]
push edx
push esi
call fcn.004ceea0
add esp, 8
test eax, eax
jne 0x4daed0
mov eax, dword [esp + 0x60]
inc ebx
add edi, 0xc
cmp ebx, dword [eax]
jl 0x4da9a6
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4da9e8
push eax
push esi
call fcn.004ceea0
add esp, 8
test eax, eax
jne 0x4daed0
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4daa1e
mov ecx, dword [eax]
xor ebx, ebx
test ecx, ecx
jle 0x4daa1e
xor edi, edi
mov ecx, dword [eax + 4]
mov edx, dword [ecx + edi]
push edx
push esi
call fcn.004ceea0
add esp, 8
test eax, eax
jne 0x4daed0
mov eax, dword [esp + 0x1c]
inc ebx
add edi, 0xc
cmp ebx, dword [eax]
jl 0x4da9fa
mov eax, dword [esp + 0x18]
test eax, eax
je 0x4daabd
mov eax, dword [esi + 0x54]
mov ebx, dword [esp + 0x10]
push eax
push 0
push 0x75
push ebx
call fcn.004baa20
mov eax, dword [esi + 0x54]
add esp, 0x10
xor edi, edi
test eax, eax
jle 0x4daa9a
mov dword [esp + 0x70], edi
mov ecx, dword [esi + 0x58]
mov edx, dword [esp + 0x70]
mov ebx, dword [ecx + edx + 8]
test ebx, ebx
je 0x4daa83
mov eax, dword [ebx + 8]
test eax, eax
je 0x4daa83
mov eax, dword [esp + 0x10]
push edi
push 0
push 0x76
push eax
call fcn.004baa20
mov ecx, dword [esp + 0x20]
push 0xfffffffffffffffd
push ebx
push 0xffffffffffffffff
push ecx
call fcn.004bad20
add esp, 0x20
mov ecx, dword [esp + 0x70]
mov eax, dword [esi + 0x54]
inc edi
add ecx, 0xc
cmp edi, eax
mov dword [esp + 0x70], ecx
jl 0x4daa4c
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x60]
test eax, eax
jne 0x4daabd
push 0
push 0
push 6
push ebx
call fcn.004baa20
push 0
push 0
push 0x78
push ebx
call fcn.004baa20
add esp, 0x20
cmp dword [esp + 0x64], 2
jne 0x4daae6
mov edi, dword [esp + 0x10]
push 0
push 0
push 6
push edi
call fcn.004baa20
mov edx, dword [esp + 0x78]
push 1
push edx
push 0x72
push edi
call fcn.004baa20
add esp, 0x20
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x4dab12
mov edi, dword [esi + 0x48]
mov ecx, dword [esp + 0x10]
push 1
push edi
lea eax, [edi + 1]
push 0x3f
push ecx
mov dword [esp + 0x84], edi
mov dword [esi + 0x48], eax
call fcn.004baa20
add esp, 0x10
jmp 0x4dab1e
mov dword [esp + 0x74], 0xffffffff
mov edi, dword [esp + 0x74]
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x30]
neg edx
sbb edx, edx
lea eax, [esp + 0x1c]
not edx
and edx, eax
push edx
mov edx, dword [esp + 0x24]
push 0
push ecx
push edx
push esi
call fcn.004e3720
mov ebx, eax
add esp, 0x14
test ebx, ebx
mov dword [esp + 0x3c], ebx
je 0x4daed0
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x4dab92
mov eax, dword [ebx + 0xc]
mov ecx, dword [ebx + 8]
mov edx, dword [esp + 0x68]
push eax
mov eax, dword [esp + 0x68]
push ecx
mov ecx, dword [esp + 0x24]
push edx
mov edx, dword [esp + 0x68]
push eax
push edi
push ecx
push 0
push 0
push edx
push ebp
push esi
call fcn.004db090
add esp, 0x2c
test eax, eax
jne 0x4daed0
jmp 0x4dadbe
mov eax, dword [esp + 0x60]
test eax, eax
je 0x4dace6
mov ecx, dword [eax]
xor edi, edi
test ecx, ecx
jle 0x4dabc8
xor ebx, ebx
mov eax, dword [esp + 0x60]
mov ecx, dword [eax + 4]
mov edx, dword [ecx + ebx]
push edx
push esi
call fcn.004cdd00
mov eax, dword [esp + 0x68]
add esp, 8
inc edi
add ebx, 0xc
cmp edi, dword [eax]
jl 0x4daba8
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x10]
push 0
mov edx, dword [ecx]
push edx
push 0x34
push eax
call fcn.004baa20
mov ecx, dword [esi]
add esp, 0x10
cmp byte [ecx + 0xcc], 4
jb 0x4dac6f
mov edx, dword [esp + 0x60]
mov eax, dword [edx]
mov dword [esp + 0x6c], eax
inc eax
push eax
call fcn.004c4410
mov edi, eax
add esp, 4
test edi, edi
je 0x4dac6f
mov eax, dword [esp + 0x6c]
xor ebx, ebx
cmp eax, ebx
jle 0x4dac50
mov dword [esp + 0x70], ebx
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x70]
mov ecx, dword [eax + 4]
mov eax, dword [ecx + edx]
push eax
call fcn.004cdbb0
sub eax, 4
add esp, 4
neg eax
mov ecx, dword [esp + 0x70]
sbb al, al
add ecx, 0xc
and al, 6
mov dword [esp + 0x70], ecx
add al, 0x6e
mov byte [ebx + edi], al
mov eax, dword [esp + 0x6c]
inc ebx
cmp ebx, eax
jl 0x4dac17
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x10]
push ecx
push edi
push 0xffffffffffffffff
push edx
mov byte [ebx + edi], 0
call fcn.004bad20
push edi
call fcn.004c4480
add esp, 0x14
mov edi, dword [esp + 0x10]
push edi
call fcn.004baaf0
push eax
push 0
push 0x78
push edi
mov dword [esp + 0x80], eax
call fcn.004baa20
mov eax, dword [esi + 0x54]
add esp, 0x14
xor ebx, ebx
test eax, eax
jle 0x4dacd4
mov dword [esp + 0x70], ebx
mov eax, dword [esi + 0x58]
mov ecx, dword [esp + 0x70]
add eax, ecx
cmp dword [eax], 0
jne 0x4dacc1
mov edx, dword [eax + 4]
push edx
push esi
call fcn.004cdd00
push ebx
push 0
push 0x79
push edi
call fcn.004baa20
add esp, 0x18
mov ecx, dword [esp + 0x70]
mov eax, dword [esi + 0x54]
inc ebx
add ecx, 0xc
cmp ebx, eax
mov dword [esp + 0x70], ecx
jl 0x4dac9b
mov eax, dword [esp + 0x6c]
push eax
push edi
call fcn.004bab60
mov ebx, dword [esp + 0x44]
add esp, 8
mov eax, dword [esi + 0x54]
mov dword [esp + 0x14], 0
test eax, eax
jle 0x4dadbe
mov dword [esp + 0x70], 0
mov ecx, dword [esi + 0x58]
mov edx, dword [esp + 0x70]
lea eax, [ecx + edx]
mov ecx, dword [ecx + edx]
test ecx, ecx
je 0x4dad9f
mov eax, dword [eax + 4]
mov dword [esp + 0x6c], eax
mov eax, dword [eax + 0xc]
test eax, eax
je 0x4dad4d
mov ecx, dword [eax]
xor ebx, ebx
test ecx, ecx
jle 0x4dad4d
xor edi, edi
mov eax, dword [eax + 4]
mov ecx, dword [eax + edi]
push ecx
push esi
call fcn.004cdd00
mov edx, dword [esp + 0x74]
add esp, 8
inc ebx
add edi, 0xc
mov eax, dword [edx + 0xc]
cmp ebx, dword [eax]
jl 0x4dad2e
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
push 0
push eax
push 5
push edi
call fcn.004baa20
mov ecx, dword [esp + 0x7c]
add esp, 0x10
mov eax, dword [ecx + 0xc]
test eax, eax
je 0x4dad72
mov eax, dword [eax]
jmp 0x4dad74
xor eax, eax
push eax
push 0
push 0x77
push edi
call fcn.004baa20
mov edx, dword [esi + 0x58]
mov eax, dword [esp + 0x80]
push 0xfffffffffffffffd
mov ecx, dword [edx + eax + 8]
push ecx
push 0xffffffffffffffff
push edi
call fcn.004bad20
mov ebx, dword [esp + 0x5c]
add esp, 0x20
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x70]
mov ecx, dword [esi + 0x54]
inc eax
add edx, 0xc
cmp eax, ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x70], edx
jl 0x4dad01
push ebx
call fcn.004e5560
mov eax, dword [esp + 0x1c]
add esp, 4
test eax, eax
je 0x4dae6f
mov edi, dword [esp + 0x10]
push edi
call fcn.004baaf0
mov ebx, eax
push ebx
push 0
push 0x7b
push edi
call fcn.004baa20
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x40]
add esp, 0x14
mov byte [esi + 0x3c], 1
test eax, eax
je 0x4dae11
mov edx, dword [esp + 0x70]
push 1
push edx
push eax
push esi
call fcn.004cea10
add esp, 0x10
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x64]
push ebx
push eax
mov eax, dword [esp + 0x7c]
push ecx
mov ecx, dword [esp + 0x28]
push edx
mov edx, dword [esp + 0x6c]
push eax
push ecx
push 0
push 0
push edx
push ebp
push esi