Function at 0x4d5340
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x70
mov eax, dword [0x514bc0]
xor eax, esp
mov dword [esp + 0x6c], eax
push ebp
push esi
push edi
mov edi, ecx
mov ecx, dword [edi + 0x64b420]
mov eax, dword [edi + 0x649380]
mov edx, dword [eax + 4]
xor esi, esi
lea ebp, [edi + 0x649380]
push esi
push ecx
mov ecx, ebp
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x48], esi
call edx
test al, al
jne 0x4d53a6
mov eax, dword [edi + 0x64b420]
push eax
mov ecx, 0x52c138
call fcn.0043e1b0
pop edi
lea eax, [esi + 0x12]
pop esi
pop ebp
mov ecx, dword [esp + 0x6c]
xor ecx, esp
call fcn.004e34f4
add esp, 0x70
ret
mov ecx, ebp
call fcn.00443060
cmp edx, esi
jl 0x4d53c3
jg 0x4d53ba
cmp eax, 0x20000
jbe 0x4d53c3
sub eax, 0x20000
sbb edx, esi
jmp 0x4d53c7
xor eax, eax
xor edx, edx
push ebx
mov ebx, dword [ebp]
push esi
push edx
mov edx, dword [ebx + 0xc]
push eax
mov ecx, ebp
call edx
push 0x506870
push ebp
mov ecx, edi
call fcn.004d2af0
mov ecx, ebp
test eax, eax
jne 0x4d53f8
call fcn.00442a00
mov eax, dword [edi + 0x64b420]
jmp 0x4d64eb
mov edx, dword [ebp]
mov eax, dword [edx + 0x10]
call eax
push 0x506870
push ebp
mov ecx, edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], edx
call fcn.004d2af0
test eax, eax
je 0x4d5443
lea esp, [esp]
mov edx, dword [ebp]
mov eax, dword [edx + 0x10]
mov ecx, ebp
call eax
push 0x506870
push ebp
mov ecx, edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], edx
call fcn.004d2af0
test eax, eax
jne 0x4d5420
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov edx, dword [ebp]
mov edx, dword [edx + 0xc]
push 0
push eax
push ecx
mov ecx, ebp
call edx
mov eax, dword [ebp]
mov edx, dword [eax + 8]
push 0x12
lea ecx, [esp + 0x4c]
push ecx
mov ecx, ebp
call edx
movzx eax, byte [esp + 0x49]
movzx ecx, byte [esp + 0x48]
movzx edx, byte [esp + 0x4b]
shl ax, 8
movzx eax, ax
or eax, ecx
movzx ecx, byte [esp + 0x4a]
inc eax
mov dword [edi + 0x64b42c], eax
dec eax
mov dword [edi + 0x64b430], eax
shl dx, 8
movzx eax, dx
movzx edx, byte [esp + 0x57]
or eax, ecx
movzx ecx, byte [esp + 0x55]
mov dword [esp + 0x10], eax
movzx eax, byte [esp + 0x56]
shl dx, 8
movzx ebx, dx
or ebx, eax
movzx eax, byte [esp + 0x54]
shl cx, 8
movzx edx, cx
movzx ecx, byte [esp + 0x4f]
shl ebx, 0x10
or ebx, edx
movzx edx, byte [esp + 0x4e]
or ebx, eax
shl cx, 8
or cx, dx
movzx eax, cx
movzx ecx, byte [esp + 0x52]
cdq
mov dword [esp + 0x3c], eax
movzx eax, byte [esp + 0x53]
shl ax, 8
mov dword [esp + 0x28], esi
mov dword [esp + 0x40], edx
movzx edx, byte [esp + 0x51]
movzx esi, ax
or esi, ecx
movzx ecx, byte [esp + 0x50]
shl dx, 8
movzx eax, dx
movzx edx, byte [esp + 0x58]
shl esi, 0x10
or esi, eax
movzx ax, byte [esp + 0x59]
shl ax, 8
or esi, ecx
or ax, dx
mov dword [esp + 0x24], ebx
mov word [edi + 0x64b4b0], ax
je 0x4d55b6
movzx eax, ax
inc eax
push eax
call fcn.004e3b96
add esp, 4
mov dword [edi + 0x64b4b4], eax
test eax, eax
je 0x4d5e0b
movzx ecx, word [edi + 0x64b4b0]
mov edx, dword [ebp]
mov edx, dword [edx + 8]
mov dword [esp + 0x34], ecx
movzx ecx, word [edi + 0x64b4b0]
push ecx
push eax
mov ecx, ebp
call edx
cmp eax, dword [esp + 0x34]
je 0x4d55a8
mov eax, dword [edi + 0x64b4b4]
push eax
call fcn.004e3342
add esp, 4
mov dword [edi + 0x64b4b4], 0
pop ebx
pop edi
pop esi
mov eax, 2
pop ebp
mov ecx, dword [esp + 0x6c]
xor ecx, esp
call fcn.004e34f4
add esp, 0x70
ret
mov ecx, dword [edi + 0x64b4b4]
mov edx, dword [esp + 0x34]
mov byte [edx + ecx], 0
mov eax, dword [esp + 0x3c]
or eax, dword [esp + 0x40]
jne 0x4d55dc
mov ecx, ebp
call fcn.00442a00
pop ebx
pop edi
pop esi
xor eax, eax
pop ebp
mov ecx, dword [esp + 0x6c]
xor ecx, esp
call fcn.004e34f4
add esp, 0x70
ret
cmp dword [edi + 0x64b42c], 1
je 0x4d5626
cmp dword [edi + 0x648358], 0
jne 0x4d64f6
mov ecx, dword [edi + 0x64b3fc]
push 0x4fe710
push ecx
call fcn.00451c30
test al, al
jne 0x4d5626
mov ecx, ebp
call fcn.00442a00
pop ebx
pop edi
pop esi
mov eax, 0x10
pop ebp
mov ecx, dword [esp + 0x6c]
xor ecx, esp
call fcn.004e34f4
add esp, 0x70
ret
mov eax, dword [edi + 0x64b42c]
cmp eax, 1
je 0x4d56cd
mov ecx, dword [edi + 0x64b424]
mov eax, dword [edi + 0x64b420]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4d5667
test dx, dx
je 0x4d5663
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4d5667
add eax, 4
add ecx, 4
test dx, dx
jne 0x4d5641
xor eax, eax
jmp 0x4d566c
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4d56cd
mov ecx, ebp
call fcn.00442a00
cmp word [0x554b82], 0x53
jne 0x4d56a7
mov edx, dword [edi + 0x64b420]
push edx
push 0x48
call fcn.00403660
pop ebx
pop edi
pop esi
mov eax, 0xc
pop ebp
mov ecx, dword [esp + 0x6c]
xor ecx, esp
call fcn.004e34f4
add esp, 0x70
ret
mov eax, dword [edi + 0x64b420]
push eax
push 0x2d
call fcn.00403660
pop ebx
pop edi
pop esi
mov eax, 0xc
pop ebp
mov ecx, dword [esp + 0x6c]
xor ecx, esp
call fcn.004e34f4
add esp, 0x70
ret
xor eax, eax
mov ecx, 1
mov dword [edi + 0x64b490], eax
mov dword [edi + 0x64b498], eax
mov dword [edi + 0x64b49c], eax
cmp dword [edi + 0x648350], ecx
jne 0x4d56f6
cmp dword [edi + 0x64b42c], ecx
je 0x4d5706
cmp dword [edi + 0x648358], eax
je 0x4d5782
mov ebx, dword [esp + 0x24]
cmp ebx, 0xffffffff
jne 0x4d5716
cmp dword [esp + 0x28], 0
je 0x4d5815
cmp esi, 0xffffffff
jne 0x4d5723
xor eax, eax
je 0x4d5815
mov ecx, dword [esp + 0x14]
mov edx, dword [ebp]
mov edx, dword [edx + 0xc]
sub ecx, esi
mov esi, dword [esp + 0x18]
mov eax, 0
sbb esi, eax
sub ecx, 0x50
push 0
sbb esi, eax
push esi
push ecx
mov ecx, ebp
call edx
push 0x506850
push ebp
mov ecx, edi
call fcn.004d2af0
test eax, eax
je 0x4d59af
mov eax, dword [ebp]
mov edx, dword [eax + 0x10]
mov ecx, ebp
call edx
mov ecx, 0xfffffffc
sub ecx, ebx
mov esi, 0xffffffff
sbb esi, dword [esp + 0x28]
add eax, ecx
adc edx, esi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [ebp]
sub eax, 0x18
push 0
sbb ecx, 0
push ecx
push eax
mov eax, dword [edx + 0xc]
mov ecx, ebp
call eax
push 0x506858
push ebp
mov ecx, edi
call fcn.004d2b80
test eax, eax
je 0x4d5d70
mov edx, dword [ebp]
mov eax, dword [edx + 0x10]
mov ecx, ebp
call eax
sub eax, 4
sbb edx, 0
mov dword [esp + 0x18], edx
mov edx, dword [ebp]
mov edx, dword [edx + 8]
mov dword [esp + 0x14], eax
push 0x10
lea eax, [esp + 0x4c]
push eax
mov ecx, ebp
call edx
cmp eax, 0x10
je 0x4d59ba
mov ecx, ebp
call fcn.00442a00
mov eax, dword [edi + 0x64b420]
push eax
mov ecx, 0x52c138
call fcn.0043e250
pop ebx
pop edi
pop esi
mov eax, 0xb
pop ebp
mov ecx, dword [esp + 0x6c]
xor ecx, esp
call fcn.004e34f4
add esp, 0x70
ret
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov eax, dword [ebp]
mov eax, dword [eax + 0xc]
sub ecx, 0x18
push 0
sbb edx, 0
push edx
push ecx
mov ecx, ebp
call eax
push 0x506858
push ebp
mov ecx, edi
call fcn.004d2b80
test eax, eax
je 0x4d5782
mov edx, dword [ebp]
mov eax, dword [edx + 0x10]
mov ecx, ebp
call eax
mov ebx, edx
mov edx, dword [ebp]
mov edx, dword [edx + 8]
mov esi, eax
push 0x10
lea eax, [esp + 0x4c]
sub esi, 4
push eax
mov ecx, ebp
sbb ebx, 0
call edx
cmp eax, 0x10
jne 0x4d57e5
push 0x506870
push ebp
mov ecx, edi
call fcn.004d2b80
test eax, eax
je 0x4d59cb
movzx edx, byte [esp + 0x53]
movzx eax, byte [esp + 0x51]
shl dx, 8
movzx ecx, dx
movzx edx, byte [esp + 0x52]
or ecx, edx
shl ax, 8
movzx edx, ax
movzx eax, byte [esp + 0x50]
shl ecx, 0x10
or ecx, edx
or ecx, eax
mov dword [esp + 0x38], ecx
movzx ecx, byte [esp + 0x4f]
shl cx, 8
movzx edx, cx
movzx ecx, byte [esp + 0x4e]
or edx, ecx
movzx ecx, byte [esp + 0x4d]
shl cx, 8
shl edx, 0x10
movzx ecx, cx
or edx, ecx
movzx ecx, byte [esp + 0x4c]
or edx, ecx
xor eax, eax
or eax, edx
mov edx, dword [esp + 0x38]
mov dword [esp + 0x2c], eax
movzx eax, byte [esp + 0x57]
xor ecx, ecx
or edx, ecx
movzx ecx, byte [esp + 0x56]
shl ax, 8
mov dword [esp + 0x30], edx
movzx edx, byte [esp + 0x55]
movzx eax, ax
or eax, ecx
shl dx, 8
movzx ecx, dx
movzx edx, byte [esp + 0x54]
shl eax, 0x10
or eax, ecx
or eax, edx
mov dword [edi + 0x64b42c], eax
cmp eax, 1
jne 0x4d64f6
mov ecx, dword [esp + 0x30]
mov eax, dword [ebp]
mov edx, dword [esp + 0x2c]
mov eax, dword [eax + 0xc]
push 0
push ecx
push edx
mov ecx, ebp
call eax
push 0x506860
push ebp
mov ecx, edi
call fcn.004d2b80
test eax, eax
jne 0x4d5782
mov edx, dword [ebp]
push eax
sub esi, 0x50
sbb ebx, eax
mov eax, dword [edx + 0xc]
push ebx
push esi
mov ecx, ebp
call eax
push ebp
mov ecx, edi
call fcn.004d29f0
test eax, eax
je 0x4d59af
push 0x506860
lea ecx, [edi + 0x14]
push ecx
mov ecx, edi
call fcn.004d2b50
test eax, eax
je 0x4d59af
mov edx, dword [ebp]
mov eax, dword [edx + 0x10]
mov ecx, ebp
call eax
mov ecx, 0xfffffffc
sub ecx, dword [esp + 0x2c]
mov esi, 0xffffffff
sbb esi, dword [esp + 0x30]
jmp 0x4d5776
mov edx, dword [edi + 0x64b420]
jmp 0x4d6205
push 0x506870
push ebp
mov ecx, edi
call fcn.004d2b80
test eax, eax
jne 0x4d59fb
mov ecx, ebp
call fcn.00442a00
mov ecx, dword [edi + 0x64b420]
push ecx
mov ecx, 0x52c138
call fcn.0043e250
pop ebx
pop edi
pop esi
mov eax, 0xb
pop ebp
mov ecx, dword [esp + 0x6c]
xor ecx, esp
call fcn.004e34f4
add esp, 0x70
ret
movzx edx, byte [esp + 0x4b]
movzx ecx, byte [esp + 0x49]
movzx eax, byte [esp + 0x4a]
shl dx, 8
movzx esi, dx
or esi, eax
movzx eax, byte [esp + 0x48]
shl cx, 8
movzx edx, cx
movzx ecx, byte [esp + 0x53]
shl cx, 8
shl esi, 0x10
or esi, edx
movzx edx, byte [esp + 0x52]
or esi, eax
movzx eax, cx
movzx ecx, byte [esp + 0x51]
or eax, edx
shl cx, 8
shl eax, 0x10
movzx edx, cx
movzx ecx, byte [esp + 0x50]
or eax, edx
movzx edx, byte [esp + 0x4f]
or eax, ecx
shl dx, 8
movzx ecx, dx
movzx edx, byte [esp + 0x4e]
or ecx, edx
movzx edx, byte [esp + 0x4d]
shl dx, 8
movzx edx, dx
shl ecx, 0x10
or ecx, edx
movzx edx, byte [esp + 0x4c]
or ecx, edx
xor edx, edx
or eax, edx
movzx edx, byte [esp + 0x55]
xor ebx, ebx
or ebx, ecx
add ebx, dword [esp + 0x1c]
movzx ecx, byte [esp + 0x56]
adc eax, dword [esp + 0x20]
shl dx, 8
mov dword [esp + 0x30], eax
movzx ax, byte [esp + 0x57]
shl ax, 8
movzx eax, ax
or eax, ecx
shl eax, 0x10
movzx ecx, dx
movzx edx, byte [esp + 0x54]
or eax, ecx
or eax, edx
mov dword [edi + 0x64b42c], eax
dec eax
mov dword [esp + 0x2c], ebx
mov dword [edi + 0x64b430], eax
cmp esi, eax
je 0x4d5b48
mov ecx, ebp
call fcn.00442a00
mov eax, dword [edi + 0x64b420]
push esi
push eax
mov ecx, edi
call fcn.004cd9e0
mov edx, dword [ebp]
mov ebx, eax
mov eax, dword [edx + 4]
push 0
push ebx
mov ecx, ebp
call eax
test al, al
jne 0x4d5b3b
lea ebx, [ebx]
push esi
mov ecx, edi
call fcn.004ce110
test eax, eax
jne 0x4d6519
push ebx
call fcn.004e3342
mov ecx, dword [edi + 0x64b420]
add esp, 4
push esi
push ecx
mov ecx, edi
call fcn.004cd9e0
mov edx, dword [ebp]
mov ebx, eax
mov eax, dword [edx + 4]
push 0
push ebx
mov ecx, ebp
call eax
test al, al
je 0x4d5b00
push ebx
call fcn.004e3342
mov ebx, dword [esp + 0x30]
add esp, 4
mov eax, dword [esp + 0x30]
mov edx, dword [ebp]
mov edx, dword [edx + 0xc]
push 0
push eax
push ebx
mov ecx, ebp
mov dword [edi + 0x64b430], esi
call edx
push 0x506860
push ebp
mov ecx, edi
call fcn.004d2b80
test eax, eax
jne 0x4d5be8
mov ecx, dword [esp + 0x18]
mov edx, dword [ebp]
push eax
mov eax, dword [esp + 0x18]
sub eax, 0x50
sbb ecx, 0
push ecx
push eax
mov eax, dword [edx + 0xc]
mov ecx, ebp
call eax
push ebp
mov ecx, edi
call fcn.004d29f0
test eax, eax
je 0x4d5bd6
push 0x506860
lea ecx, [edi + 0x14]
push ecx
mov ecx, edi
call fcn.004d2b50
test eax, eax
je 0x4d5bd6
mov edx, dword [ebp]
mov eax, dword [edx + 0x10]
mov ecx, ebp
call eax
mov esi, eax
mov ecx, 0xfffffffc
sub ecx, ebx
mov eax, 0xffffffff
sbb eax, dword [esp + 0x30]
add esi, ecx
adc edx, eax
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], edx
jmp 0x4d5bec
mov ecx, ebp
call fcn.00442a00
mov ecx, dword [edi + 0x64b420]
jmp 0x4d5f9f
mov esi, dword [esp + 0x1c]
mov edx, dword [ebp]
mov edx, dword [edx + 8]
push 0x34
lea eax, [esp + 0x4c]
push eax
mov ecx, ebp
call edx
cmp eax, 0x34
jae 0x4d5c32
mov eax, dword [edi + 0x64b420]
push eax
mov ecx, 0x52c138
call fcn.0043dc80
mov ecx, ebp
call fcn.00442a00
pop ebx
pop edi
pop esi
mov eax, 3
pop ebp
mov ecx, dword [esp + 0x6c]
xor ecx, esp
call fcn.004e34f4
add esp, 0x70
ret
movzx ecx, byte [esp + 0x5b]
movzx edx, byte [esp + 0x5a]
shl cx, 8
movzx eax, cx
or eax, edx
movzx ecx, byte [esp + 0x59]
shl cx, 8
movzx edx, cx
movzx ecx, byte [esp + 0x58]
shl eax, 0x10
or eax, edx
movzx edx, byte [esp + 0x6b]
or eax, ecx
shl dx, 8
movzx ecx, dx
movzx edx, byte [esp + 0x69]
shl dx, 8
mov dword [esp + 0x10], eax
movzx eax, byte [esp + 0x6a]
or ecx, eax
movzx ebx, byte [esp + 0x66]
movzx eax, dx
movzx edx, byte [esp + 0x68]
shl ecx, 0x10
or ecx, eax
or ecx, edx
movzx edx, byte [esp + 0x67]
shl dx, 8
movzx edx, dx
or edx, ebx
movzx ebx, byte [esp + 0x65]
shl bx, 8
shl edx, 0x10
movzx ebx, bx
or edx, ebx
movzx ebx, byte [esp + 0x64]
or edx, ebx
xor eax, eax
or eax, edx
movzx edx, byte [esp + 0x7a]
mov dword [esp + 0x3c], eax
movzx eax, byte [esp + 0x7b]
xor ebx, ebx
or ecx, ebx
movzx ebx, byte [esp + 0x76]
shl ax, 8
mov dword [esp + 0x40], ecx
movzx ecx, ax
movzx eax, byte [esp + 0x79]
or ecx, edx
shl ax, 8
movzx edx, ax
movzx eax, byte [esp + 0x78]
shl ecx, 0x10
or ecx, edx
movzx edx, byte [esp + 0x77]
shl dx, 8
movzx edx, dx
or edx, ebx
movzx ebx, byte [esp + 0x75]
shl bx, 8
movzx ebx, bx
or ecx, eax
shl edx, 0x10
or edx, ebx
movzx ebx, byte [esp + 0x74]
xor eax, eax
or edx, ebx
or eax, edx
xor ebx, ebx
or ecx, ebx
add eax, esi
adc ecx, dword [esp + 0x20]
mov dword [esp + 0x24], eax
movzx eax, byte [esp + 0x53]
mov dword [esp + 0x28], ecx
movzx ecx, byte [esp + 0x52]
shl ax, 8
or ax, cx
cmp ax, 0x2e
jbe 0x4d5d70
mov eax, dword [edi + 0x64b420]
push eax
push eax
mov ecx, 0x52c138
call fcn.0043dd20
mov eax, dword [edi + 0x648350]
cmp eax, 1
je 0x4d5d70
cmp eax, 2
jne 0x4d5c13
mov eax, dword [esp + 0x24]
add eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
adc ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x10]
mov dword [esp + 0x24], eax
mov dword [edi + 0x64b410], eax
xor eax, eax
mov ebx, 1
mov dword [esp + 0x28], ecx
mov dword [edi + 0x64b414], ecx
mov dword [esp + 0x2c], eax
mov dword [edi + 0x64b408], eax
mov dword [edi + 0x64b40c], eax
mov dword [esp + 0x34], ebx
cmp dword [edi + 0x64b430], esi
je 0x4d5dc2
mov ecx, ebp
call fcn.00442a00
mov dword [edi + 0x64b430], esi
cmp esi, dword [edi + 0x64b42c]
jae 0x4d64b8
jmp 0x4d5de0
mov edx, dword [edi + 0x64b42c]
mov eax, dword [edi + 0x64b430]
sub edx, ebx
cmp eax, edx
jne 0x4d5e23
mov eax, dword [edi + 0x64b420]
push eax
call fcn.004e7e9c
mov esi, eax
add esp, 4
mov dword [esp + 0x10], esi
test esi, esi
jne 0x4d5e38
pop ebx
pop edi
pop esi
mov eax, 4
pop ebp
mov ecx, dword [esp + 0x6c]
xor ecx, esp
call fcn.004e34f4
add esp, 0x70
ret
mov ecx, dword [edi + 0x64b420]
push eax
push ecx
mov ecx, edi
call fcn.004cd9e0
mov esi, eax
mov dword [esp + 0x10], eax
cmp dword [edi + 0x649384], 0xffffffff
jne 0x4d5ecd
mov edx, dword [ebp]
mov eax, dword [edx + 4]
push 0
push esi
mov ecx, ebp
call eax
test al, al
jne 0x4d5ecd
mov ecx, dword [edi + 0x64b430]
push ecx
mov ecx, edi
call fcn.004ce110
cmp eax, 9
je 0x4d650e
cmp eax, 3
je 0x4d5fc2
mov edx, dword [edi + 0x64b42c]
mov eax, dword [edi + 0x64b430]
sub edx, ebx
cmp eax, edx
jne 0x4d5ea7
mov eax, dword [edi + 0x64b420]
push eax
call fcn.004e7e9c
mov esi, eax
add esp, 4
mov dword [esp + 0x10], esi
test esi, esi
je 0x4d5e0b
jmp 0x4d5ebc
mov ecx, dword [edi + 0x64b3fc]
push eax
push ecx
mov ecx, edi
call fcn.004cd9e0
mov esi, eax
mov dword [esp + 0x10], eax
mov edx, dword [ebp]
mov eax, dword [edx + 4]
push 0
push esi
mov ecx, ebp
call eax
test al, al
je 0x4d5e56
cmp dword [esp + 0x44], 0
jne 0x4d5efb
cmp dword [esp + 0x34], 0
je 0x4d5f03
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
mov edx, dword [ebp]
mov edx, dword [edx + 0xc]
push 0
push eax
push ecx
mov ecx, ebp
call edx
lea eax, [edi + 0x64b4a8]
mov dword [esp + 0x14], eax
mov dword [esp + 0x34], 0
push ebp
mov ecx, edi
call fcn.004d29f0
test eax, eax
je 0x4d6478
mov edx, dword [ebp]
mov eax, dword [edx + 0x10]
mov ecx, ebp
call eax
mov dword [edi + 0x64b438], eax
mov dword [edi + 0x64b43c], edx
xor eax, eax
jmp 0x4d5f30
mov cl, byte [eax + edi + 0x14]
cmp cl, byte [eax + 0x506870]
jne 0x4d5f43
add eax, ebx
cmp eax, 4
jl 0x4d5f30
cmp eax, 4
je 0x4d6478
xor eax, eax
mov edi, edi
mov dl, byte [eax + edi + 0x14]
cmp dl, byte [eax + 0x506860]
jne 0x4d5f63
add eax, ebx
cmp eax, 4
jl 0x4d5f50
cmp eax, 4
je 0x4d6478
xor eax, eax
mov edi, edi
mov cl, byte [eax + edi + 0x14]
cmp cl, byte [eax + 0x506850]
jne 0x4d5f83
add eax, ebx
cmp eax, 4
jl 0x4d5f70
cmp eax, 4
je 0x4d5fcb
cmp dword [edi + 0x648350], ebx
je 0x4d6463
mov ecx, ebp
call fcn.00442a00
mov ecx, dword [esp + 0x10]
push ecx
mov ecx, 0x52c138
call fcn.0043dc80
pop ebx
pop edi
pop esi
mov eax, 3
pop ebp
mov ecx, dword [esp + 0x6c]
xor ecx, esp
call fcn.004e34f4
add esp, 0x70
ret
mov dword [esp + 0x44], ebx
jmp 0x4d64a0
mov edx, dword [ebp]
mov edx, dword [edx + 8]
push 0x2a
lea eax, [esp + 0x4c]
push eax
mov ecx, ebp
call edx
cmp eax, 0x2a
je 0x4d5fec
cmp dword [edi + 0x648350], ebx
jmp 0x4d645d
push 0x68
call fcn.004e3b96
mov esi, eax
xor ebx, ebx
add esp, 4
cmp esi, ebx
je 0x4d5e0b
movzx eax, byte [esp + 0x49]
movzx ecx, byte [esp + 0x48]
shl ax, 8
or ax, cx
mov word [esi], ax
movzx edx, byte [esp + 0x4b]
movzx eax, byte [esp + 0x4a]
shl dx, 8
or dx, ax
mov word [esi + 2], dx
movzx ecx, byte [esp + 0x4d]
movzx edx, byte [esp + 0x4c]
shl cx, 8
or cx, dx
mov word [esi + 4], cx
movzx eax, byte [esp + 0x4f]
movzx ecx, byte [esp + 0x4e]
shl ax, 8
or ax, cx
mov word [esi + 6], ax
movzx edx, byte [esp + 0x53]
movzx ecx, byte [esp + 0x52]
shl dx, 8
movzx eax, dx
movzx edx, byte [esp + 0x51]
or eax, ecx
shl dx, 8
movzx ecx, dx
movzx edx, byte [esp + 0x50]
shl eax, 0x10
or eax, ecx
or eax, edx
mov dword [esi + 8], eax
movzx eax, byte [esp + 0x57]
movzx edx, byte [esp + 0x56]
shl ax, 8
movzx ecx, ax
movzx eax, byte [esp + 0x55]
or ecx, edx
shl ax, 8
movzx edx, ax
movzx eax, byte [esp + 0x54]
shl ecx, 0x10
or ecx, edx
or ecx, eax
mov dword [esi + 0xc], ecx
movzx ecx, byte [esp + 0x5b]
movzx eax, byte [esp + 0x5a]
shl cx, 8
movzx edx, cx
movzx ecx, byte [esp + 0x59]
or edx, eax
shl cx, 8
shl edx, 0x10
movzx eax, cx
movzx ecx, byte [esp + 0x58]
or edx, eax
or edx, ecx
mov dword [esi + 0x10], edx
mov dword [esi + 0x14], ebx
movzx edx, byte [esp + 0x5f]
movzx ecx, byte [esp + 0x5e]
shl dx, 8
movzx eax, dx
movzx edx, byte [esp + 0x5d]
or eax, ecx
shl dx, 8
movzx ecx, dx
movzx edx, byte [esp + 0x5c]
shl eax, 0x10
or eax, ecx
or eax, edx
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], ebx
movzx eax, byte [esp + 0x61]
movzx ecx, byte [esp + 0x60]
shl ax, 8
or ax, cx
mov word [esi + 0x20], ax
movzx edx, byte [esp + 0x63]
shl dx, 8
movzx eax, byte [esp + 0x62]
or dx, ax
mov word [esi + 0x24], dx
movzx ecx, byte [esp + 0x65]
movzx edx, byte [esp + 0x64]
shl cx, 8
or cx, dx
mov word [esi + 0x26], cx
movzx eax, byte [esp + 0x67]
movzx edx, byte [esp + 0x66]
shl ax, 8
movzx ecx, ax
or ecx, edx
mov dword [esi + 0x28], ecx
movzx eax, byte [esp + 0x69]
movzx ecx, byte [esp + 0x68]
shl ax, 8
or ax, cx
mov word [esi + 0x2c], ax
movzx edx, byte [esp + 0x6d]
movzx ecx, byte [esp + 0x6c]
shl dx, 8
movzx eax, dx
movzx edx, byte [esp + 0x6b]
or eax, ecx
shl eax, 0x10
shl dx, 8
movzx ecx, dx
movzx edx, byte [esp + 0x6a]
or eax, ecx
or eax, edx
mov dword [esi + 0x38], eax
movzx eax, byte [esp + 0x71]
movzx edx, byte [esp + 0x70]
shl ax, 8
movzx ecx, ax
movzx eax, byte [esp + 0x6f]
or ecx, edx
shl ax, 8
movzx edx, ax
movzx eax, byte [esp + 0x6e]
shl ecx, 0x10
or ecx, edx
or ecx, eax
movzx eax, word [esi + 0x20]
mov dword [esi + 0x30], ecx
mov dword [esi + 0x34], ebx
mov dword [esi + 0x44], ebx
mov dword [esi + 0x40], ebx
mov dword [esi + 0x3c], ebx
mov dword [esi + 0x48], ebx
mov dword [esi + 0x4c], ebx
cmp ax, bx
jne 0x4d6228
cmp dword [edi + 0x648350], 1
je 0x4d6463
mov edx, dword [esp + 0x10]
push edx
mov ecx, 0x52c138
call fcn.0043dc80
pop ebx
pop edi
pop esi
mov eax, 3
pop ebp
mov ecx, dword [esp + 0x6c]
xor ecx, esp
call fcn.004e34f4
add esp, 0x70
ret
movzx ecx, ax
inc ecx
push ecx
call fcn.004e3b96
add esp, 4
mov dword [esi + 0x48], eax
cmp eax, ebx
je 0x4d5e0b
movzx eax, word [esi + 0x24]
cmp ax, bx
je 0x4d6260
movzx edx, ax
push edx
call fcn.004e3b96
add esp, 4
mov dword [esi + 0x40], eax
cmp eax, ebx
je 0x4d5e0b
movzx eax, word [esi + 0x26]
cmp ax, bx
je 0x4d6280
movzx eax, ax
push eax
call fcn.004e3b96
add esp, 4
mov dword [esi + 0x44], eax
cmp eax, ebx
je 0x4d5e0b
movzx eax, word [esi + 0x20]
mov ecx, dword [esi + 0x48]
mov edx, dword [ebp]
mov edx, dword [edx + 8]
push eax
push ecx
mov ecx, ebp
call edx
movzx ecx, word [esi + 0x20]
cmp eax, ecx
jne 0x4d6456
movzx eax, word [esi + 0x24]
cmp ax, bx
je 0x4d62c6
mov ecx, dword [esi + 0x40]
mov edx, dword [ebp]
mov edx, dword [edx + 8]
movzx eax, ax
push eax
push ecx
mov ecx, ebp
call edx
movzx ecx, word [esi + 0x24]
cmp eax, ecx
jne 0x4d6456
movzx eax, word [esi + 0x26]
cmp ax, bx
je 0x4d62ed
mov ecx, dword [esi + 0x44]
mov edx, dword [ebp]
mov edx, dword [edx + 8]
movzx eax, ax
push eax
push ecx
mov ecx, ebp
call edx
movzx ecx, word [esi + 0x26]
cmp eax, ecx
jne 0x4d6456
movzx edx, word [esi + 0x20]
mov eax, dword [esi + 0x48]
mov ecx, 0x800
mov byte [edx + eax], 0
test word [esi + 4], cx
jne 0x4d632b
push esi
mov ecx, edi
call fcn.004d1aa0
cmp dword [esi + 0x4c], ebx
jne 0x4d632b
movzx edx, byte [esi + 1]
mov eax, dword [esi + 0x48]
push edx
push eax
call fcn.004e3250
test al, al
je 0x4d632b
mov ecx, 0x800
or word [esi + 4], cx
mov edx, 0x800
test word [esi + 4], dx
je 0x4d636a
mov eax, dword [esi + 0x48]
push eax
call fcn.004f442f
add esp, 4
mov dword [esi + 0x4c], eax
test eax, eax
je 0x4d5e0b
push eax
mov ecx, edi
call fcn.004cd770
mov ebx, eax
test ebx, ebx
je 0x4d636a
mov ecx, dword [esi + 0x48]
push ecx
call fcn.004e3342
add esp, 4
mov dword [esi + 0x48], ebx
movzx eax, word [esi]
movzx edx, al
push edx
shr eax, 8
push eax
mov eax, dword [esi + 0x48]
push eax
mov ecx, edi
call fcn.004d29c0
movzx eax, word [esi]
mov edx, dword [esi + 0x44]
movzx ecx, al
push ecx
shr eax, 8
push eax
push edx
mov ecx, edi
call fcn.004d29c0
push esi
mov ecx, edi
call fcn.004d1cc0
mov edx, 1
cmp dword [edi + 0x648350], edx
jne 0x4d63b3
cmp dword [edi + 0x64b42c], edx
je 0x4d63bf
xor ebx, ebx
cmp dword [edi + 0x648358], ebx
je 0x4d63cf
jmp 0x4d63c1
xor ebx, ebx
mov eax, dword [esp + 0x1c]
add dword [esi + 0x30], eax
mov ecx, dword [esp + 0x20]
adc dword [esi + 0x34], ecx
cmp dword [esi + 0x28], ebx
jne 0x4d6416
cmp dword [esp + 0x2c], ebx
je 0x4d63f2
mov eax, dword [esi + 0x34]
cmp eax, dword [edi + 0x64b40c]
ja 0x4d6416
jb 0x4d63f2
mov ecx, dword [esi + 0x30]
cmp ecx, dword [edi + 0x64b408]
jae 0x4d6416
mov eax, dword [esi + 0x34]
mov ecx, dword [esi + 0x30]
cmp eax, dword [esp + 0x28]
ja 0x4d6416
jb 0x4d6406
cmp ecx, dword [esp + 0x24]
jae 0x4d6416
mov dword [edi + 0x64b408], ecx
mov dword [edi + 0x64b40c], eax
mov dword [esp + 0x2c], edx
add dword [edi + 0x64b4ac], edx
mov eax, dword [esi + 0x4c]
mov dword [esi + 0x58], ebx
mov dword [esi + 0x5c], ebx
mov dword [esi + 0x50], ebx
mov dword [esi + 0x54], ebx
mov ecx, edi
cmp eax, ebx
je 0x4d6439
push eax
call fcn.004d72e0
jmp 0x4d6442
mov edx, dword [esi + 0x48]
push edx
call fcn.004d7230
mov dword [esi + 0x54], eax
mov eax, dword [esp + 0x14]
mov dword [eax], esi
lea eax, [esi + 0x64]
mov dword [eax], ebx
mov dword [esp + 0x14], eax
jmp 0x4d6463
cmp dword [edi + 0x648350], 1
jne 0x4d5590
push ebp
mov ecx, edi
call fcn.004d29f0
mov ebx, 1
test eax, eax
jne 0x4d5f13
mov ecx, ebp
call fcn.00442a00
mov ecx, dword [esp + 0x10]
push ecx
call fcn.004e3342
add esp, 4
push 0x506850
lea edx, [edi + 0x14]
push edx
mov ecx, edi
call fcn.004d2b50
test eax, eax
je 0x4d64b8
add dword [edi + 0x64b430], ebx
mov eax, dword [edi + 0x64b430]
cmp eax, dword [edi + 0x64b42c]
jb 0x4d5de0
mov eax, dword [edi + 0x64b4ac]
mov ecx, dword [esp + 0x3c]
xor edx, edx
cmp eax, ecx
jne 0x4d64d2
cmp edx, dword [esp + 0x40]
je 0x4d55c7
movzx eax, ax
xor edx, edx
cmp eax, ecx
jne 0x4d64e5
cmp edx, dword [esp + 0x40]
je 0x4d55c7
mov eax, dword [edi + 0x64b3fc]
push eax
mov ecx, 0x52c138
call fcn.0043dc80
pop ebx
pop edi
pop esi
mov eax, 3
pop ebp
mov ecx, dword [esp + 0x6c]
xor ecx, esp
call fcn.004e34f4
add esp, 0x70
ret
push esi
mov ecx, 0x52c138
call fcn.0043e1b0
mov ecx, dword [esp + 0x7c]
pop ebx
pop edi
pop esi
pop ebp
xor ecx, esp
mov eax, 9
call fcn.004e34f4
add esp, 0x70
ret