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

Disassembly:
sub esp, 0x58
push ebx
push esi
mov esi, dword [esp + 0x68]
xor ebx, ebx
xorps xmm0, xmm0
mov dword [esp + 0x54], ebx
movlpd qword [esp + 0x3c], xmm0
mov dword [esp + 0x34], ebx
mov eax, dword [esi]
mov dword [esp + 0x38], ebx
mov byte [esp + 0xb], bl
mov ecx, dword [eax]
mov dword [esp + 0xc], ecx
mov ecx, dword [ecx]
mov dword [esp + 0x10], ecx
cmp byte [ecx + 0x57], bl
jne 0x53f83a
push ebp
push edi
imul edi, dword [esp + 0x74], 0x30
add eax, 0x1f0
mov dword [esp + 0x1c], eax
add edi, dword [esi + 0x18]
mov ebp, dword [edi]
mov dword [eax], ebx
mov dword [esp + 0x60], ebp
push dword [ebp + 0xc]
push eax
call fcn.00589b87
mov dword [esp + 0x38], eax
mov al, byte [ebp]
mov byte [esp + 0x1a], al
movzx eax, al
mov dword [esp + 0x3c], edx
mov dword [esp + 0x34], eax
pop ecx
pop ecx
cmp eax, 0x31
jne 0x53ed87
push ebp
push dword [esp + 0x18]
call fcn.005628bb
pop ecx
pop ecx
test eax, eax
jne 0x53f838
test dword [ebp + 4], 0x1000
push dword [ebp + 0x14]
push dword [esp + 0x20]
je 0x53ed6e
call fcn.00540d43
jmp 0x53ed73
call fcn.00589b0b
pop ecx
pop ecx
mov ecx, eax
mov dword [edi + 0x20], ecx
mov dword [edi + 0x24], edx
or ecx, dword [esp + 0x30]
or edx, dword [esp + 0x34]
jmp 0x53edbe
push dword [ebp + 0x10]
push dword [esp + 0x20]
call fcn.00589b87
pop ecx
pop ecx
mov ecx, eax
mov dword [edi + 0x24], edx
mov dword [edi + 0x20], ecx
cmp dword [ebp + 0xc], ebx
je 0x53edb0
test dword [ebp + 4], 0x41000
jne 0x53edb0
cmp dword [ebp + 0x14], ebx
je 0x53ed7d
push ebp
push dword [esp + 0x20]
call fcn.00589cb5
pop ecx
pop ecx
mov ecx, eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], edx
cmp dword [eax], ebx
je 0x53edd7
mov eax, 0x1000
or word [edi + 0xa], ax
mov eax, dword [ebp + 4]
mov dword [esp + 0x4c], eax
test al, 3
je 0x53ee98
push dword [ebp + 0x24]
push dword [esp + 0x20]
call fcn.00589d6a
test byte [esp + 0x54], 1
pop ecx
pop ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x58], eax
je 0x53ee4d
or edx, dword [esp + 0x28]
or ecx, eax
add eax, 0xffffffff
mov dword [esp + 0x50], ecx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x28]
adc eax, 0xffffffff
mov dword [esp + 0x20], ecx
mov dword [esp + 0x4c], eax
mov eax, edx
shrd dword [esp + 0x50], eax, 1
mov dword [esp + 0x24], edx
shr eax, 1
cmp eax, dword [esp + 0x28]
ja 0x53ee7b
jb 0x53eea8
mov eax, dword [esp + 0x50]
cmp eax, dword [esp + 0x58]
jae 0x53ee7b
jmp 0x53eea8
mov eax, edx
mov dword [esp + 0x50], ecx
shrd dword [esp + 0x50], eax, 1
shr eax, 1
cmp eax, dword [esp + 0x28]
jb 0x53ee98
ja 0x53ee6d
mov eax, dword [esp + 0x50]
cmp eax, dword [esp + 0x58]
jb 0x53ee98
mov eax, dword [esp + 0x6c]
cmp dword [eax], ebx
jle 0x53ee8e
test byte [eax + 0x2c], 0x40
je 0x53ee8e
push str.ON_clause_references_tables_to_its_right
push dword [esp + 0x18]
call fcn.00561f37
jmp 0x53efe2
mov eax, dword [esp + 0x4c]
and eax, 0xfffffffd
mov dword [ebp + 4], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x44], eax
push dword [esp + 0x2c]
or dword [edi + 0x14], 0xffffffff
xor eax, eax
or dword [edi + 0x10], 0xffffffff
mov dword [edi + 0x28], ecx
mov dword [edi + 0x2c], edx
mov word [edi + 0xc], ax
call fcn.00534948
add esp, 4
test eax, eax
je 0x53f120
push dword [ebp + 0xc]
call fcn.00565a99
push dword [ebp + 0x10]
mov dword [esp + 0x30], eax
call fcn.00565a99
mov edx, dword [esp + 0x38]
add esp, 8
mov ecx, dword [edi + 0x24]
and edx, dword [edi + 0x20]
and ecx, dword [esp + 0x34]
or edx, ecx
mov dword [esp + 0x58], eax
mov eax, 0x800
mov dword [esp + 0x50], 0x3fff
je 0x53ef0e
mov dword [esp + 0x50], eax
mov eax, dword [edi + 0x1c]
test eax, eax
jle 0x53ef29
imul ecx, eax, 0x14
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x14]
mov eax, dword [ecx + eax - 0xc]
mov dword [esp + 0x28], eax
jmp 0x53ef2d
mov eax, dword [esp + 0x28]
push dword [esp + 0x2c]
push eax
lea eax, [esp + 0x68]
push eax
push dword [esp + 0x78]
call fcn.00540924
mov edx, dword [esp + 0x3c]
add esp, 0x10
test eax, eax
je 0x53ef69
mov eax, dword [esp + 0x60]
mov dword [edi + 0x14], eax
mov eax, dword [esp + 0x64]
push edx
mov dword [edi + 0x18], eax
call fcn.0054d56c
and ax, word [esp + 0x54]
pop ecx
mov word [edi + 0xc], ax
cmp byte [esp + 0x12], 0x2d
jne 0x53ef79
mov eax, 0x800
or word [edi + 0xa], ax
mov eax, dword [esp + 0x58]
test eax, eax
je 0x53f0cb
push edx
push eax
lea eax, [esp + 0x68]
push eax
push dword [esp + 0x78]
call fcn.00540924
add esp, 0x10
test eax, eax
je 0x53f0cb
mov eax, dword [esp + 0x58]
test byte [eax + 4], 0x20
jne 0x53f0cb
mov dword [esp + 0x40], ebx
cmp dword [edi + 0x14], ebx
jl 0x53f0bf
mov edi, dword [esp + 0x18]
push ebx
push ebp
push edi
call fcn.005648df
add esp, 0xc
mov dword [esp + 0x28], eax
cmp byte [edi + 0x57], bl
je 0x53efe9
test eax, eax
je 0x53f838
push eax
push edi
call fcn.0056485a
pop ecx
pop ecx
jmp 0x53f838
push 3
push eax
push esi
call fcn.00593c0b
add esp, 0xc
test eax, eax
je 0x53f838
push dword [esp + 0x74]
imul edi, eax, 0x30
push eax
push esi
add edi, dword [esi + 0x18]
mov dword [esp + 0x64], edi
call fcn.0054b6ed
add esp, 0xc
cmp byte [esp + 0x12], 0x2d
jne 0x53f025
mov eax, 0x800
or word [edi + 0xa], ax
imul edi, dword [esp + 0x74], 0x30
push 8
pop eax
push dword [esp + 0x28]
add edi, dword [esi + 0x18]
push dword [esp + 0x18]
or word [edi + 0xa], ax
call fcn.0058cbe2
pop ecx
pop ecx
test eax, eax
je 0x53f054
mov eax, 0x800
or word [edi + 0xc], ax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x28]
push eax
push dword [esp + 0x18]
call fcn.0054017d
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x3c]
or ecx, dword [esp + 0x54]
or word [edx + 0xa], ax
mov eax, dword [esp + 0x68]
mov dword [edx + 0x14], eax
mov eax, dword [esp + 0x6c]
mov dword [edx + 0x18], eax
mov eax, dword [esp + 0x38]
or eax, dword [esp + 0x4c]
mov dword [edx + 0x20], eax
mov eax, dword [esp + 0x28]
mov dword [edx + 0x28], eax
mov eax, dword [esp + 0x2c]
mov dword [edx + 0x2c], eax
mov eax, dword [esp + 0x30]
mov dword [edx + 0x24], ecx
movzx eax, byte [eax]
push eax
call fcn.0054d56c
add ax, word [esp + 0x4c]
add esp, 0xc
and ax, word [esp + 0x50]
mov word [edx + 0xc], ax
jmp 0x53f517
mov eax, ebp
mov dword [esp + 0x58], edi
mov dword [esp + 0x28], eax
jmp 0x53f058
cmp byte [esp + 0x12], 0x32
jne 0x53f517
mov eax, dword [ebp + 4]
mov dword [esp + 0x5c], eax
test al, 1
jne 0x53f517
mov eax, dword [esp + 0x28]
push eax
call fcn.00562823
pop ecx
test eax, eax
jne 0x53f517
mov eax, dword [esp + 0x5c]
or eax, 0x20000000
mov byte [ebp], 0xaa
mov dword [ebp + 4], eax
xor eax, eax
mov dword [ebp + 8], str.false
mov dword [edi + 0x28], ebx
mov dword [edi + 0x2c], ebx
mov word [edi + 0xc], ax
jmp 0x53f517
mov al, byte [ebp]
cmp al, 0x30
jne 0x53f1f4
cmp byte [esi + 8], 0x2c
jne 0x53f215
imul ecx, dword [esp + 0x74], 0x30
mov esi, ebx
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x50], esi
mov dword [esp + 0x5c], ecx
lea ecx, [eax + 8]
mov dword [esp + 0x58], ecx
jmp 0x53f154
mov esi, dword [esp + 0x50]
mov edi, dword [esp + 0x18]
push ebx
push dword [ecx]
push edi
call fcn.005648df
add esp, 0xc
push eax
push ebx
push dword [ebp + 0xc]
push edi
call fcn.005648df
add esp, 0xc
push eax
movzx eax, byte [esi + 0x657800]
push eax
push dword [esp + 0x20]
call fcn.0056da79
mov esi, eax
push ebp
push esi
call fcn.0058ced3
mov edi, dword [esp + 0x88]
push 3
push esi
push edi
call fcn.00593c0b
mov esi, eax
push esi
push edi
push dword [esp + 0x98]
call fcn.0053ecc7
push dword [esp + 0xa4]
mov edi, dword [edi + 0x18]
add edi, dword [esp + 0x90]
push esi
mov esi, dword [esp + 0xa8]
push esi
call fcn.0054b6ed
mov eax, dword [esp + 0x8c]
add esp, 0x3c
mov ecx, dword [esp + 0x58]
inc eax
add ecx, 0x14
mov dword [esp + 0x50], eax
mov dword [esp + 0x58], ecx
cmp eax, 2
jl 0x53f150
jmp 0x53f517
cmp al, 0x2b
jne 0x53f215
mov edi, dword [esp + 0x74]
push edi
push esi
push dword [esp + 0x74]
call fcn.0053f840
imul edi, edi, 0x30
add esp, 0xc
add edi, dword [esi + 0x18]
jmp 0x53f517
cmp al, 0x33
jne 0x53f2ea
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x58], eax
cmp byte [eax], 0xa7
jne 0x53f517
cmp word [eax + 0x20], bx
jl 0x53f517
test byte [ebp + 4], 1
jne 0x53f517
push ebx
push ebx
push 0x79
push dword [esp + 0x24]
call fcn.0056242d
add esp, 0x10
push eax
push ebx
push dword [esp + 0x60]
push dword [esp + 0x24]
call fcn.005648df
add esp, 0xc
push eax
push 0x36
push dword [esp + 0x20]
call fcn.0056da79
push 0x83
push eax
push esi
call fcn.00593c0b
add esp, 0x1c
mov dword [esp + 0x5c], eax
test eax, eax
je 0x53f517
mov edx, dword [esp + 0x70]
mov edi, dword [esp + 0x74]
imul esi, eax, 0x30
mov eax, dword [esp + 0x58]
push 4
add esi, dword [edx + 0x18]
mov dword [esi + 0x20], ebx
mov dword [esi + 0x24], ebx
mov ecx, dword [eax + 0x1c]
mov dword [esi + 0x14], ecx
movsx eax, word [eax + 0x20]
mov dword [esi + 0x18], eax
pop eax
push edi
push dword [esp + 0x60]
mov word [esi + 0xc], ax
push edx
call fcn.0054b6ed
mov eax, dword [esp + 0x7c]
add esp, 0xc
imul edi, edi, 0x30
push 8
add edi, dword [eax + 0x18]
pop eax
or word [edi + 0xa], ax
mov eax, dword [edi + 0x28]
mov ecx, dword [edi + 0x2c]
mov dword [esi + 0x28], eax
mov dword [esi + 0x2c], ecx
mov esi, dword [esp + 0x70]
jmp 0x53f517
cmp al, 0xac
jne 0x53f517
cmp byte [esi + 8], 0x2c
jne 0x53f517
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x64]
push eax
push ebp
push dword [esp + 0x24]
call fcn.00545db1
add esp, 0x14
test eax, eax
je 0x53f517
mov eax, dword [ebp + 0x14]
mov esi, dword [esp + 0x5c]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x58], eax
test esi, esi
je 0x53f347
push ebx
push ebx
push esi
push dword [esp + 0x24]
call fcn.00540286
add esp, 0x10
mov dword [esp + 0x34], eax
jmp 0x53f34b
mov dword [esp + 0x34], ebx
cmp dword [esp + 0x40], ebx
je 0x53f3ab
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
cmp byte [eax + 0x57], bl
jne 0x53f3ab
mov eax, 0x400
or word [edi + 0xa], ax
mov edi, ebx
mov ecx, dword [esi + 8]
mov dword [esp + 0x5c], ecx
mov cl, byte [ecx]
test cl, cl
je 0x53f3ab
mov ebp, dword [esp + 0x34]
mov ebx, dword [esp + 0x5c]
movzx edx, cl
mov al, byte [edx + 0x657150]
and al, 0x20
not al
and al, cl
mov byte [ebx + edi], al
mov ecx, dword [ebp + 8]
mov al, byte [edx + 0x657038]
mov byte [edi + ecx], al
inc edi
mov ebx, dword [esi + 8]
mov cl, byte [ebx + edi]
test cl, cl
jne 0x53f37c
mov ebp, dword [esp + 0x60]
xor ebx, ebx
mov eax, dword [esp + 0x18]
cmp byte [eax + 0x57], 0
jne 0x53f403
mov edi, dword [esp + 0x34]
push dword [edi + 8]
call fcn.00578223
cmp dword [esp + 0x44], 0
mov edi, dword [edi + 8]
pop ecx
mov dword [esp + 0x60], eax
mov cl, byte [eax + edi - 1]
je 0x53f3ef
mov edx, dword [esp + 0x3c]
xor eax, eax
cmp cl, 0x40
cmove edx, eax
movzx eax, cl
mov dword [esp + 0x50], edx
mov cl, byte [eax + 0x657038]
jmp 0x53f3f7
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x60]
inc cl
mov byte [eax + edi - 1], cl
jmp 0x53f40b
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x50], eax
cmp dword [esp + 0x40], 0
mov eax, 0x657310
push ebx
push dword [esp + 0x5c]
mov edi, str.NOCASE
push dword [esp + 0x20]
cmove edi, eax
call fcn.005648df
add esp, 0xc
push esi
mov esi, dword [esp + 0x18]
push edi
push eax
push esi
call fcn.00562297
add esp, 0xc
push eax
push 0x39
push esi
call fcn.0056da79
mov esi, eax
push ebp
push esi
call fcn.0058ced3
mov eax, dword [esp + 0x88]
push 0x103
push esi
push eax
call fcn.00593c0b
push ebx
push dword [esp + 0x80]
mov dword [esp + 0x88], eax
push dword [esp + 0x44]
call fcn.005648df
mov esi, dword [esp + 0x44]
add esp, 0x30
push dword [esp + 0x34]
push edi
push eax
push esi
call fcn.00562297
add esp, 0xc
push eax
push 0x38
push esi
call fcn.0056da79
mov esi, eax
push ebp
push esi
call fcn.0058ced3
push 0x103
push esi
mov esi, dword [esp + 0x90]
push esi
call fcn.00593c0b
push dword [esp + 0x80]
mov edi, eax
push esi
push dword [esp + 0x98]
mov dword [esp + 0x90], edi
call fcn.0053ecc7
push edi
push esi
push dword [esp + 0xa4]
call fcn.0053ecc7
mov eax, dword [esp + 0xb0]
add esp, 0x3c
imul edi, eax, 0x30
add edi, dword [esi + 0x18]
cmp dword [esp + 0x50], 0
je 0x53f517
push eax
push dword [esp + 0x60]
push esi
call fcn.0054b6ed
push dword [esp + 0x80]
push dword [esp + 0x70]
push esi
call fcn.0054b6ed
add esp, 0x18
mov al, byte [ebp]
cmp al, 0x35
je 0x53f526
cmp al, 0x2d
jne 0x53f5f0
mov eax, dword [ebp + 0xc]
push eax
call fcn.00565b08
mov edx, eax
mov dword [esp + 0x60], edx
pop ecx
cmp edx, 1
jle 0x53f5ed
mov eax, dword [ebp + 0x10]
push eax
call fcn.00565b08
pop ecx
cmp eax, edx
jne 0x53f5ed
mov eax, dword [ebp + 0xc]
mov ecx, 0x1000
test dword [eax + 4], ecx
je 0x53f56a
mov eax, dword [ebp + 0x10]
test dword [eax + 4], ecx
jne 0x53f5ed
cmp byte [esi + 8], 0x2c
jne 0x53f5ed
mov edi, dword [esp + 0x14]
push edx
push ebx
push dword [ebp + 0xc]
push edi
call fcn.00564900
push dword [esp + 0x6c]
mov esi, eax
push ebx
push dword [ebp + 0x10]
push edi
call fcn.00564900
push eax
movzx eax, byte [ebp]
push esi
push eax
push edi
call fcn.0056da79
mov esi, eax
push ebp
push esi
call fcn.0058ced3
push 0x8001
push esi
mov esi, dword [esp + 0xb0]
push esi
call fcn.00593c0b
add esp, 0x44
push eax
push esi
push dword [esp + 0x74]
call fcn.0053ecc7
mov edx, dword [esp + 0x68]
add esp, 0xc
inc ebx
cmp ebx, edx
jl 0x53f574
imul eax, dword [esp + 0x74], 0x30
mov ecx, 0x2000
add eax, dword [esi + 0x18]
or word [eax + 0xa], 6
mov word [eax + 0xc], cx
jmp 0x53f822
mov al, byte [ebp]
cmp al, 0x31
jne 0x53f69e
cmp dword [edi + 0x1c], ebx
jne 0x53f69e
mov ecx, dword [ebp + 0xc]
cmp byte [ecx], 0xb1
jne 0x53f69e
mov eax, 0x1000
test dword [ebp + 4], eax
je 0x53f69e
mov eax, dword [ebp + 0x14]
cmp dword [eax + 0x34], ebx
je 0x53f62c
test dword [eax + 4], 0x200
je 0x53f69e
cmp dword [eax + 0x44], ebx
jne 0x53f69e
cmp byte [esi + 8], 0x2c
jne 0x53f822
push ecx
call fcn.00565b08
pop ecx
test eax, eax
jle 0x53f822
push 0x8002
push ebp
push esi
call fcn.00593c0b
mov esi, eax
inc ebx
mov eax, dword [esp + 0x7c]
imul edx, esi, 0x30
push esi
push eax
mov ecx, dword [eax + 0x18]
push dword [esp + 0x80]
mov dword [edx + ecx + 0x1c], ebx
call fcn.0053ecc7
push dword [esp + 0x8c]
push esi
mov esi, dword [esp + 0x90]
push esi
call fcn.0054b6ed
push dword [ebp + 0xc]
call fcn.00565b08
add esp, 0x28
cmp ebx, eax
jl 0x53f64a
jmp 0x53f822
cmp byte [esi + 8], 0x2c
jne 0x53f822
lea eax, [esp + 0x5c]
mov dword [esp + 0x5c], ebx
push eax
lea eax, [esp + 0x5c]
mov dword [esp + 0x5c], ebx
push eax
lea eax, [esp + 0x1b]
push eax
push ebp
push dword [esp + 0x28]
call fcn.00545a2b
add esp, 0x14
test eax, eax
jle 0x53f822
imul ecx, dword [esp + 0x74], 0x30
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x5c], edi
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x40], ecx
dec eax
mov dword [esp + 0x58], eax
test edi, edi
je 0x53f70c
push edi
push dword [esp + 0x20]
call fcn.00589cb5
pop ecx
pop ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x3c], edx
jmp 0x53f721
xorps xmm0, xmm0
movlpd qword [esp + 0x50], xmm0
mov eax, dword [esp + 0x54]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x50], eax
test ecx, ecx
je 0x53f737
push ecx
push dword [esp + 0x20]
call fcn.00589cb5
pop ecx
pop ecx
jmp 0x53f748
xorps xmm0, xmm0
movlpd qword [esp + 0x34], xmm0
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
and eax, dword [esp + 0x50]
and edx, dword [esp + 0x3c]
or eax, edx
jne 0x53f806
test edi, edi
je 0x53f76d
push ebx
push ebx
push edi
push dword [esp + 0x24]
call fcn.00540286
add esp, 0x10
jmp 0x53f76f
mov eax, ebx
push eax
push ebx
push 0x2e
push dword [esp + 0x20]
call fcn.0056da79
add esp, 0x10
test byte [ebp + 4], 1
je 0x53f793
test eax, eax
je 0x53f793
or dword [eax + 4], 1
mov ecx, dword [ebp + 0x24]
mov dword [eax + 0x24], ecx
push 3
push eax
push esi
call fcn.00593c0b
mov edi, dword [esp + 0x7c]
mov edx, eax
mov eax, dword [esp + 0x5c]
imul esi, edx, 0x30
push 0x40
add esi, dword [edi + 0x18]
mov dword [esi + 0x20], eax
mov eax, dword [esp + 0x4c]
mov dword [esi + 0x24], eax
mov eax, dword [esp + 0x50]
mov ecx, dword [eax + 0x1c]
mov dword [esi + 0x14], ecx
movsx eax, word [eax + 0x20]
mov dword [esi + 0x18], eax
pop eax
push dword [esp + 0x80]
mov word [esi + 0xc], ax
mov al, byte [esp + 0x23]
push edx
push edi
mov byte [esi + 0xf], al
call fcn.0054b6ed
mov ecx, dword [edi + 0x18]
add esp, 0x18
add ecx, dword [esp + 0x60]
push 8
pop eax
or word [ecx + 0xa], ax
mov eax, dword [ecx + 0x28]
mov ecx, dword [ecx + 0x2c]
mov dword [esi + 0x28], eax
mov dword [esi + 0x2c], ecx
mov esi, edi
mov edi, dword [esp + 0x5c]
mov eax, dword [esp + 0x40]
mov ecx, edi
mov edi, eax
mov dword [esp + 0x40], ecx
mov eax, dword [esp + 0x58]
mov dword [esp + 0x5c], edi
test eax, eax
jg 0x53f6ed
imul eax, dword [esp + 0x74], 0x30
mov ecx, dword [esp + 0x44]
add eax, dword [esi + 0x18]
or dword [eax + 0x20], ecx
mov ecx, dword [esp + 0x4c]
or dword [eax + 0x24], ecx
pop edi
pop ebp
pop esi
pop ebx
add esp, 0x58
ret